NahdaAIنهضة
TypeScript • المستوى الثاني • الدرس 1

التعدادات المحددة (Enums)

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

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

  • فهم دور الـ Enum في تجميع الثوابت المترابطة لمنع الكتابة الخاطئة للمجموعات المحددة.
  • الفرق بين التعدادات الرقمية (Numeric Enums) والتعدادات النصية (String Enums).
  • تطبيق الـ Enums في دالة معالجة حالات التطبيق لإعطاء إشارات واضحة وقت التطوير.
  • تحسين مقروءة الكود وسهولة صيانته عند التوسع في الخيارات المتاحة.

1. ما هي الـ Enums؟

تتيح لك Enums (التعدادات) تعريف مجموعة من الثوابت المترابطة بأسماء رمزية معبرة. تمنع الـ Enums الاعتماد على النصوص المباشرة ("Magic Strings") التي قد تتسبب بأخطاء إملائية صعبة الاكتشاف.

typescript
// 1️⃣ Numeric Enum (تأخذ أرقاماً متسلسلة تلقائياً 0, 1, 2...)
enum Role {
  User,  // 0
  Admin, // 1
  Guest  // 2
}

// 2️⃣ String Enum (تكون قيمها صريحة ومقروءة أثناء التنقيح)
enum UserRole {
  Admin = "ADMIN",
  Member = "MEMBER"
}

2. متى نستخدم الـ Enums؟

🚦 حالات ثابتة ومحددة

مثل حالات طلبات الشراء (Pending, Approved, Shipped)، أدوار المستخدمين، أو اتجاهات الحركة (Up, Down, Left, Right).

🔍 الإكمال التلقائي (Autocompletion)

يسمح لك المحرر باستعراض كل الخيارات المتاحة بمجرد كتابة اسم الـ Enum متبوعاً بنقطة . دون الحاجة لتذكر القيمة.

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

تحدي الدرس الأول: إضافة حالة الشحن واختبار التعدادات

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

  1. أضف حالة جديدة إلى OrderStatus باسم Shipped وقيمتها النصية "SHIPPED".
  2. قم بتوسيع دالة checkStatus للتحقق من حالة OrderStatus.Shipped وطباعة رسالة تعبر عن شحن الطلب.
  3. قم باستدعاء دالة checkStatus واختبارها بحالة OrderStatus.Rejected وحالة OrderStatus.Shipped.
  4. اضغط على "تشغيل الكود" لمعاينة النتائج واجتياز القواعد.
⏳ جارٍ تحميل المحرر التفاعلي...