enum نوع التعدادات (enum)
آخر تحديث: 2026-10-22
enum نوع التعدادات (enum)
تجمع التعدادات مجموعة من الثوابت المترابطة تحت مساحة اسم واحدة، فأعضاؤها نوع وقيمة معًا. التعدادات الرقمية تزيد تلقائيًا بدءًا من 0؛ أما التعدادات النصية فتُسند لها قيم صريحة وهي أسهل قراءةً.
| المجموعة | الأنواع الأساسية |
|---|---|
| النوع | نوع |
| الوضع الصارم | غير مطلوب |
ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.
📝 الصيغة
enum Direction { Up, Down } // تعداد رقمي: 0, 1
enum Level { Info = "info", Error = "error" } // تعداد نصي
⚙️ المعاملات
| Member = 0 | قيم الأعضاء: يزيد العضو الرقمي تلقائيًا من 0 ويمكن إسناد قيمة صريحة له؛ أما العضو النصي فيجب إسناد قيمة له صراحةً |
|---|---|
| Enum[key] | التعيين العكسي: التعدادات الرقمية وحدها تدعم الاستعلام العكسي عن الاسم بـ Direction[0]، أما النصية فلا |
القيمة المُعادة:تنتج التعدادات كائنًا حقيقيًا في وقت التشغيل (ليست أنواعًا بحتة)، وهو ما يميزها عن interface/type.
▶ مثال
عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:
الناتج:
1 Shipped
warn
(مخرجات التشغيل بعد التحويل؛ ترتيب Paid هو 1، و OrderStatus[2] يُرجع بالعكس Shipped)
💡 نقاط مهمة
ℹ️ معلومة تتمتع التعدادات الرقمية بتعيين عكسي (OrderStatus[1] ← "Paid")، بينما لا تمتلكه التعدادات النصية.
💡 تلميح تبقى التعدادات النصية ذات معنى في التصحيح وبعد التسلسل (تظهر في السجل "warn" لا 1)؛ ففضّلها في الواجهات الخارجية.
⚠️ تنبيه تتداخل التعدادات وظيفيًا مع الاتحادات الحرفية؛ وتميل قواعد كثير من الفرق إلى الأخيرة (لعدمها كودًا في وقت التشغيل). ابدأ في المشاريع الجديدة بالاتحاد الحرفي ولا تلجأ إلى enum إلا عند الحاجة الفعلية.
🏷️ الأنواع الأساسية ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريبًا.
📚 دروس ذات صلة
❓ أسئلة شائعة
س كيف نختار بين enum والنوع الاتحادي الحرفي؟
ج كلاهما يحدّد القيم المسموحة. التعداد كائن حقيقي يمكن استخدامه في منطق وقت التشغيل؛ والاتحاد الحرفي بلا أي كلفة في وقت التشغيل ويتكامل بسلاسة مع السلاسل النصية العادية. يُنصح بالاتحاد الحرفي في معظم السيناريوهات.
س ما قاعدة الترقيم الافتراضية في التعدادات الرقمية؟
ج تبدأ بالزيادة من 0؛ وبعد إسناد قيمة صريحة لأحد الأعضاء يتابع الأعضاء اللاحقون منه بزيادة 1. مثلًا { A, B = 5, C } تحمل الأرقام 0 و 5 و 6.
س ما هو const enum؟
ج يستبدل const enum مراجع الأعضاء بقيمها مباشرةً في زمن الترجمة دون توليد كائن التعداد. لكنه يعاني مشكلات توافق مع الترجمة المعزولة (مثل Babel/swc)، فاحترس عند استخدامه عبر الوحدات؛ وكثيرًا ما تُستعاض عنه في المشاريع الحديثة بكائنات as const.