Какие знаешь проблемы Enum

«Какие знаешь проблемы Enum» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Enums в TypeScript имеют несколько потенциальных проблем:

  1. Числовые enums могут быть небезопасными — они допускают невалидные значения:
enum Status {
  Active = 1,
  Inactive = 2
}
const s: Status = 999; // Ошибки не будет
  1. Обратное маппинг может сбивать с толку:
enum Color { Red = 1 }
console.log(Color[1]); // "Red" - не всегда ожидаемое поведение
  1. Tree-shaking — enums генерируют реальный код в runtime, что мешает удалению неиспользуемого кода.

  2. Строковые enums не поддерживают обратное маппинг вообще.

  3. Const enums решают проблему tree-shaking, но требуют preserveConstEnums и не работают в изолированных модулях.

Альтернатива — использовать union types:

type Status = 'active' | 'inactive';