🔷 شرح TypeScript

التعدادات والأنواع الحرفية

التعدادات (Enums)

تجمع مجموعة ثوابت مترابطة تحت اسم واحد، لتجنّب الأرقام/النصوص السحرية:

enum Direction {
  Up,
  Down,
  Left,
  Right,
}

let move: Direction = Direction.Up;
console.log(move);   // 0 (تبدأ من الصفر تلقائيًّا)

تعدادات نصّية (String Enums)

الأوضح والأكثر استخدامًا عمليًّا:

enum Status {
  Active = "ACTIVE",
  Inactive = "INACTIVE",
  Pending = "PENDING",
}

function setStatus(s: Status) {
  console.log(s);
}
setStatus(Status.Active);   // "ACTIVE"

الأنواع الحرفية (Literal Types)

بديل أخفّ من Enums — نقيّد المتغيّر لقيم نصّية محدّدة بالضبط:

let size: "small" | "medium" | "large";

size = "medium";   // صحيح
size = "huge";     // خطأ! ليست ضمن القيم المسموحة

تتألّق في معاملات الدوال:

function setAlign(align: "left" | "center" | "right") {
  // ...
}
setAlign("center");   // صحيح
setAlign("top");      // خطأ فوري

Enum أم Literal Type؟

الحالةالأفضل
مجموعة قيم بسيطة كمعاملLiteral Types (أخفّ)
ثوابت مُعاد استخدامها في أماكن كثيرةEnum

أخطاء شائعة

  • الاعتماد على القيم الرقمية الضمنية للـ Enum ثم تغيّر الترتيب فتفسد البيانات — استخدم Enums نصّية.
  • كتابة نفس اتحاد القيم الحرفية مرارًا بدل تجميعه في type.

🎯 التالي: الأسماء البديلة (Type) مقابل الواجهات (Interface).