Enum определяет набор именованных констант. TypeScript поддерживает числовые и строковые перечисления.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Enum определяет набор именованных констант. TypeScript поддерживает числовые и строковые перечисления.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
В отличие от большинства типов TypeScript (которые исчезают на этапе компиляции), обычный enum выделяет объект JavaScript в ваш пакет. Вот почему многие команды предпочитают объединение строковых литералов плюс 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 слабо проверяются), современный TypeScript часто отдаёт предпочтение объединению строковых литералов для простых случаев — они легче и сериализуются естественно.
Используйте перечисления, когда нужно пространство имён или обратное отображение.