يُعرّف enum مجموعة من الثوابت المسماة. TypeScript يدعم enum رقمي و string enum.
ts
{ , , , }
.;
[];
{
= ,
= ,
}
.;
يُعرّف enum مجموعة من الثوابت المسماة. TypeScript يدعم enum رقمي و string enum.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
على عكس معظم أنواع TypeScript (التي تختفي وقت الترجمة)، enum عادية تصدر كائن JavaScript إلى bundle الخاص بك. لهذا السبب يفضل العديد من الفرق union من string literals بالإضافة إلى as const، وهي على المستوى النوعي فقط:
// often preferred — zero runtime cost, easy to read in logs
const Status = { Active: "ACTIVE", Inactive: "INACTIVE" } as const;
type Status = typeof Status[keyof typeof Status]; // "ACTIVE" | "INACTIVE"
// or simply:
type Direction = "up" | "down" | "left" | "right";
const enum E { A, B } // inlined at compile time — no runtime object, but has tooling caveats
تعطي enums أسماء ذات معنى لمجموعات ثابتة (حالات، أدوار، اتجاهات) وتجمعها تحت namespace واحد.
لكن لأنها تصدر كود runtime ولها خصائص غريبة (numeric enums تُفحص بشكل느슨)، فإن TypeScript الحديثة غالبا تفضل string-literal unions للحالات البسيطة — فهي أخف وتتسلسل بشكل طبيعي.
استخدم enums عندما تريد namespacing أو reverse mapping.