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 تمنع تغيير نوع المتغير لاحقاً إلى نوع آخر غير مطابق للنوع المستنتج.
التطبيق العملي المباشر
تحدي الدرس الثاني: إنشاء متغيرات بخيارات متعددة
قم بالتعديل على الكود في المحرر أدناه لتنفيذ التغييرات التالية:
- أنشئ متغيراً باسم
statusMessageباستخدام الـ Union Type ليقبل إماstringأوboolean. - قم بإسناد قيمة نصية للمتغير
statusMessageواطبعها بالكونسول. - أعد تعيين قيمة بولينية (
trueأوfalse) للمتغير نفسه واطبعها بالكونسول مجدداً. - اضغط على زر "تشغيل الكود" لمعاينة النتائج وتأكيد اجتياز القواعد.
⏳ جارٍ تحميل المحرر التفاعلي...