Ответ
enum и const enum в TypeScript оба используются для создания перечислений, но есть ключевые различия:
-
Генерация кода
enumсоздаёт реальный объект в скомпилированном JavaScript.const enumполностью удаляется при компиляции, заменяясь на значения.
-
Использование
enumможно использовать динамически (например,Object.keys(MyEnum)).const enumтолько для статического доступа (MyEnum.Value).
- Оптимизация
const enumпредпочтительнее, если нужна производительность, так как не генерирует лишний код.
// enum (остаётся в JS)
enum Direction {
Up = 'UP',
Down = 'DOWN'
}
console.log(Direction.Up); // 'UP'
// const enum (исчезает после компиляции)
const enum Status {
Active = 1,
Inactive = 0
}
console.log(Status.Active); // заменяется на console.log(1)