الدرس 10 من 10
النوع unknown بدل any
- 13 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
افحص القيمة قبل أن تستعملها
الشرح
النوع any يعطّل فحص المترجم، فكل عملية عليه مسموحة، وكل خطأ يمرّ إلى وقت التشغيل. وJSON.parse تُرجع any، فتدخل البيانات القادمة من الخارج إلى كودك دون فحص. شغّل الكود الذي تبدأ به وانظر إلى 30001، فقد وصل رقم المنفذ نصًّا، فصار الجمع لصقًا للنصّين.
أمّا unknown فعكسه، فهو يقبل أيّ قيمة، لكنه لا يسمح بأيّ عملية عليها قبل أن تتأكّد من نوعها، وتستعمل typeof و!== null وin لتضييق النوع خطوة بعد خطوة حتى يصير استعمال القيمة آمنًا.
وانتبه إلى خطأ شائع، وهو أنّ typeof null === "object"، فلا يكفي الفحص typeof data === "object" وحده قبل أن تقرأ خاصية من القيمة.
المطلوب
اجعل safeParse تُرجع unknown، ثم ضيّق نوع الناتج في portFrom بحيث تُرجع port إن كان رقمًا، وتُرجع 8080 في كل حالة أخرى.
الفحوص
6 فحوص- لا توجد أخطاء في الأنواع
- ناتج safeParse لا يُستعمل قبل فحصه
- ناتج safeParse يُستعمل بعد التضييق بلا خطأ
- الدالة portFrom تقرأ المنفذ إذا كان رقمًا
- المنفذ المكتوب نصًّا يُرجع 8080
- الدالة portFrom لا تتوقّف بخطأ مع القيمة null