> В чем отличие Type и Enum в TypeScript и как они выглядят после компиляции (TypeScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: ЛОЦИЯ, LoyaltyLabs

Стек: TypeScript

> Пример ответа

Type (псевдоним типа) и Enum (перечисление) в TypeScript служат разным целям. Type создаёт псевдоним для существующего типа (примитива, объединения, кортежа и т.д.) и полностью стирается после компиляции - в JavaScript от него не остаётся никакого кода. Enum же определяет набор именованных констант, и после компиляции превращается в реальный объект JavaScript (если это не const enum).

Пример:

TYPESCRIPT
// Type - исчезает после компиляции
type Status = 'active' | 'inactive';
// Enum - создаёт объект в JS
enum 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 - когда нужна реальная структура данных с константами, доступная в рантайме.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью