PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые типы

Что такое 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

Другие вопросы раздела