الدرس 7 من 10
حرّاس الأنواع
- 14 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
من unknown إلى نوع موثوق
الشرح
ما يصلك من JSON.parse أو من الشبكة لا نوع له في الحقيقة، ونوعه الصادق unknown: لا يدعك المترجم تلمسه قبل أن تفحصه.
والفحص نفسه يضيّق: بعد typeof x === "object" && x !== null صار x كائنًا، وبعد "id" in x صار له حقل id — نوعه unknown حتى تفحصه بـtypeof هو الآخر.
لكن التضييق يموت عند حدود الدالة: دالة تُرجع boolean لا تخبر من يستدعيها بشيء. نوع الناتج x is User يحمله إلى الخارج، فيصير data مستخدمًا داخل if (isUser(data)). وهو وعد لا يتحقّق منه المترجم: لو أرجعت true دائمًا لصدّقك.
المطلوب
اكتب isUser(x: unknown): x is User تتحقّق فعلًا من أن id رقم وemail نصّ، وتُرجع false لـnull وللقيم البسيطة بلا أن ترمي.
معايير التصحيح
5 معايير- لا أخطاء أنواع
- تقبل مستخدمًا صحيحًا
- ترفض null والقيم البسيطة بلا أن ترمي
- ترفض الكائن الناقص أو الخاطئ النوع
- داخل if (isUser(v)) يصير v مستخدمًا