В чем разница между Enum и Object в TypeScript

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

Ответ

Enum и Object в TypeScript служат разным целям, несмотря на схожесть.

  • Enum создает именованный набор констант, который компилируется в объект, но предоставляет строгую типизацию.
    enum Status { Active, Inactive } // Status.Active = 0
  • Object — это обычный JS-объект, который можно использовать для хранения пар ключ-значение, но без встроенной типизации значений.
    const Status = { Active: 0, Inactive: 1 } as const;

Ключевые отличия:

  1. Типизация: Enum автоматически типизирует значения, Object требует as const для точных литералов.
  2. Обратная совместимость: Enum генерирует дополнительный код при компиляции, Object остается как есть.
  3. Использование: Enum удобен для фиксированных наборов, Object — для динамических данных.

Выбор зависит от задачи: Enum для строгих констант, Object — для гибкости.