NahdaAIنهضة
TypeScript • المستوى الأول • الدرس 2

استنتاج الأنواع والأنواع المخصصة (Type Inference & Union Types)

العودة لفهرس المستوى

أهداف الدرس العلمية

  • فهم استنتاج الأنواع التلقائي (Type Inference) دون الحاجة لكتابة النوع دائماً.
  • دمج أنواع مختلفة باستخدام الرمز | عبر Union Types.
  • التعامل بحرية مع البيانات التي قد تأتي بصيغ متعددة (مثل الأرقام والنصوص).
  • تضييق نطاق الأنواع (Type Narrowing) لضمان المعالجة الآمنة للبيانات.

1. ما هي Union Types؟

تتيح لك الـ Union Types تحديد أكثر من نوع محتمل لمتغير واحد باستخدام عامل الفصل الرأسي (|). يفيد هذا النمط عندما تكون قيمة الحقل مرنة، كأن تقبل رقماً معرفياً أو رمزا نصياً.

typescript
// تعريف متغير يقبل إما نص أو رقم
let accountCode: string | number;

accountCode = "ACC-9921"; // ✅ صحيح
accountCode = 9921;       // ✅ صحيح
accountCode = true;       // ⛔ خطأ: Type 'boolean' is not assignable to type 'string | number'.

2. استنتاج الأنواع التلقائي (Type Inference)

💡 الاستنتاج الذكي

يقوم مفسر TypeScript بتخمين ونسبة النوع القائم تلقائياً بناءً على القيمة الأولية المسندة للمتغير دون الحاجة لكتابة التوصيف الصريح.

🛡️ الحماية المستمرة

حتى مع الاستنتاج التلقائي، تظل TypeScript تمنع تغيير نوع المتغير لاحقاً إلى نوع آخر غير مطابق للنوع المستنتج.

التطبيق العملي المباشر

تحدي الدرس الثاني: إنشاء متغيرات بخيارات متعددة

قم بالتعديل على الكود في المحرر أدناه لتنفيذ التغييرات التالية:

  1. أنشئ متغيراً باسم statusMessage باستخدام الـ Union Type ليقبل إما string أو boolean.
  2. قم بإسناد قيمة نصية للمتغير statusMessage واطبعها بالكونسول.
  3. أعد تعيين قيمة بولينية (true أو false) للمتغير نفسه واطبعها بالكونسول مجدداً.
  4. اضغط على زر "تشغيل الكود" لمعاينة النتائج وتأكيد اجتياز القواعد.
⏳ جارٍ تحميل المحرر التفاعلي...