الدرس 4 من 10
واجهات الكائنات
- 11 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
سمِّ شكل الكائن مرّة واحدة
الشرح
تفترض الدالة label أنّ الكائن الذي يصلها فيه title وprice، ولا شيء يضمن ذلك. أمّا interface فيعطي هذا الشكل اسمًا مرّة واحدة، فيصير اتفاقًا يفحصه المترجم عند كل استدعاء.
والمطابقة هنا بنيوية (structural)، أي أنّ كل كائن فيه الحقول المطلوبة بأنواعها يطابق الواجهة أيًّا كان مصدره، فلا تحتاج إلى class ولا إلى implements.
أمّا الكائن الحرفي (object literal)، أي الكائن الذي تكتبه مباشرة في مكانه، فيفحصه المترجم بصرامة أكبر، فالحقل الزائد فيه خطأ لأنه غالبًا سهو، كاسم مكتوب خطأً أو حقل لن يقرأه أحد. لكنّ هذا الفحص خاصّ بالكائنات الحرفية وحدها، أمّا المتغيّر الجاهز الذي فيه حقول زائدة فيمرّ دون اعتراض.
المطلوب
عرّف interface Product فيه title نصًّا وprice رقمًا، واجعله نوع مُعامل label.
الفحوص
6 فحوص- لا توجد أخطاء في الأنواع
- النوع Product فيه title وprice
- الحقل الزائد في الكائن الحرفي خطأ
- الحقل الناقص خطأ أيضًا
- الدالة label ترفض السعر إذا كان نصًّا
- الدالة label تُرجع الوصف الصحيح