Что такое Enum в TypeScript?
Продвинутые типы
Enum в TypeScript — именованный набор констант. В отличие от большинства возможностей TS, enum существует и во время выполнения как объект.
Виды
enum Direction { Up, Down } // числовой: 0, 1
enum Status { Active = 'active', Off = 'off' } // строковый
const enum Size { S = 's', M = 'm' } // подставляется в код- Числовой — значения по порядку с 0, есть обратное отображение (
Direction[0] === 'Up'). Менее безопасен: можно передать любое значение типаnumber(литерал вне enum с TS 5.0 — уже ошибка). - Строковый — понятные значения в логах и API.
- `const enum` — без объекта в рантайме, но плохо работает с изолированной компиляцией.
Пример
function setStatus(status: Status) {}
setStatus(Status.Active);
setStatus('active'); // ошибка: строка не совместима со строковым enumАльтернативы
Union литералов ('active' | 'off') или объект as const — без особого синтаксиса, удобнее для данных из API.
Коротко для собеседования
Enum — набор именованных констант, существующий и в рантайме; бывает числовым, строковым и const; часто его заменяют union литералов или as const.
Подробнее: TypeScript Handbook — Enums