> В чем отличие Type и Enum в TypeScript и как они выглядят после компиляции (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: ЛОЦИЯ, LoyaltyLabs
Стек: TypeScript
> Пример ответа
Type (псевдоним типа) и Enum (перечисление) в TypeScript служат разным целям. Type создаёт псевдоним для существующего типа (примитива, объединения, кортежа и т.д.) и полностью стирается после компиляции - в JavaScript от него не остаётся никакого кода. Enum же определяет набор именованных констант, и после компиляции превращается в реальный объект JavaScript (если это не const enum).
Пример:
TYPESCRIPT// Type - исчезает после компиляцииtype Status = 'active' | 'inactive';// Enum - создаёт объект в JSenum Color {Red = 'RED',Green = 'GREEN',}
После компиляции в JavaScript:
JAVASCRIPT// Type не виден// Enum превращается в объектvar Color;(function (Color) {Color["Red"] = "RED";Color["Green"] = "GREEN";})(Color || (Color = {}));
Ключевые отличия:
-
Type- только для статической проверки типов, не генерирует код. -
Enum- генерирует JavaScript-объект (кромеconst enum, который инлайнится и тоже исчезает). -
Enumподдерживает обратное маппинг (для числовых значений),Type- нет. -
Enumможет быть константным (const enum), тогда он ведёт себя какtype- не создаёт объект, а подставляет значения на этапе компиляции.
Итог: используйте Type для объединений, кортежей и псевдонимов, а Enum - когда нужна реальная структура данных с константами, доступная в рантайме.
> Похожие задачи по frontend
В каких случаях использовать useState и Redux и почему
Работали ли вы с React?
В чем разница между типами void и never в TypeScript
Что такое дженерики в TypeScript и для чего они используются
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью