Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про TypeScript: typescript, enum

Какие недостатки есть у enum в TypeScript?

Вопрос проверяет понимание того, как enum реализованы в TypeScript и какие практические проблемы могут возникать.

Короткий ответ

Enum увеличивают размер бандла, потому что превращаются в объект в JavaScript. Они менее гибкие, чем union types, и иногда усложняют типизацию. Также возможны неожиданные особенности при работе с числовыми enum и обратным маппингом. Поэтому в современном TypeScript часто предпочитают строковые union-типы.

Длинный ответ

Enum в TypeScript удобны, но имеют ряд практических ограничений.

1) Как enum компилируется

Определение: Enum — тип, который компилируется в JavaScript-объект, содержащий значения и иногда обратное отображение.

Пример:

enum Status {
  Active,
  Disabled
}

Компиляция приводит к созданию объекта.

2) Увеличение размера бандла

Причина:

  1. Enum создаёт объект.

  2. Иногда добавляется обратный маппинг.

  3. В больших проектах это увеличивает итоговый код.

3) Менее удобная типизация

Вместо enum часто используют:

type Status = "active" | "disabled";

Плюсы union:

  1. Нет лишнего кода в JS.

  2. Проще интегрировать с API.

4) Проблемы числовых enum

Числовые enum:

  1. Допускают неочевидные значения.

  2. Могут приводить к ошибкам при сравнении.

Пример:

enum Role {
  Admin = 1
}

let r: Role = 999 as Role; // возможно

5) Когда enum всё же оправдан

  1. Когда нужен набор констант.

  2. Когда важно явное пространство имён.

  3. В библиотечном коде.

Вывод: enum удобны, но могут увеличивать бандл и уступают union-типам по гибкости, поэтому их применяют осознанно.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • TypeScript

    TypeScript

Ключевые слова

#typescript

#enum

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию