الدرس 2 من 10
استنتاج الأنواع
- 10 دقائق
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
اكتب النوع حين يلزم فقط
الشرح
لا تحتاج إلى كتابة نوع كل متغيّر، فمن let total = 0 يعرف المترجم أنّ total رقم، ويرفض بعدها أن تُسند إليه نصًّا، وهذا ما يسمّى الاستنتاج (inference)، وهو يكفي في أغلب الكود.
وكتابة النوع حين لا يلزم قد تضرّ، فالسطر const cart: object = { items: 3 } يُضيّع ما عرفه المترجم عن الكائن، فيصبح cart.items خطأً في الأنواع. فاكتب النوع حيث لا يجد المترجم ما يستنتج منه، وأهمّ ذلك مُعاملات الدوال.
وانتبه إلى الفرق بين const وlet، فنوع const unit = "kg" هو النوع الحرفي (literal type) "kg" لأنّ قيمته لن تتغيّر، أمّا let unit = "kg" فيتّسع نوعه إلى string لأنّ قيمته قد تتغيّر.
المطلوب
احذف الأنواع المكتوبة التي تضرّ حتى يبقى نوع currency هو النوع الحرفي "SAR" ويعرف المترجم أنّ cart.items رقم، ثم حدّد نوع مُعامل toHalalas بـ number لكي ترفض النصوص.
الفحوص
5 فحوص- لا توجد أخطاء في الأنواع
- المتغيّر currency نوعه الحرفي "SAR"
- المترجم يعرف أنّ cart.items رقم
- الدالة toHalalas ترفض النصّ
- ناتج toHalalas(42) يساوي 4200