الدرس 7 من 10

حرّاس الأنواع

هدف الدرس

من unknown إلى نوع موثوق

01

الشرح

ما يصلك من JSON.parse أو من الشبكة لا نوع له في الحقيقة، ونوعه الصادق unknown: لا يدعك المترجم تلمسه قبل أن تفحصه.

والفحص نفسه يضيّق: بعد typeof x === "object" && x !== null صار x كائنًا، وبعد "id" in x صار له حقل id — نوعه unknown حتى تفحصه بـtypeof هو الآخر.

لكن التضييق يموت عند حدود الدالة: دالة تُرجع boolean لا تخبر من يستدعيها بشيء. نوع الناتج x is User يحمله إلى الخارج، فيصير data مستخدمًا داخل if (isUser(data)). وهو وعد لا يتحقّق منه المترجم: لو أرجعت true دائمًا لصدّقك.

02

المطلوب

اكتب isUser(x: unknown): x is User تتحقّق فعلًا من أن id رقم وemail نصّ، وتُرجع false لـnull وللقيم البسيطة بلا أن ترمي.

معايير التصحيح

5 معايير
  1. لا أخطاء أنواع
  2. تقبل مستخدمًا صحيحًا
  3. ترفض null والقيم البسيطة بلا أن ترمي
  4. ترفض الكائن الناقص أو الخاطئ النوع
  5. داخل if (isUser(v)) يصير v مستخدمًا
main.ts
المخرجاتTypeScript 5.9

جارٍ تحميل مترجم TypeScript… مرّة واحدة ثم يحفظه المتصفح.

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».