Что такое enum (перечисление) в TypeScript
Что такое enum?
enum (enumeration, перечисление) — это тип данных в TypeScript, который позволяет объявить набор именованных констант. Перечисления делают код более выразительным и помогают избежать «магических» строк или чисел.
enum Status {
Pending,
InProgress,
Done
}
Числовые и строковые enum’ы
По умолчанию перечисления числовые: первый элемент имеет значение 0, каждый следующий увеличивается на 1. Можно задать стартовое значение или присваивать значения вручную.
enum Status {
Pending = 1,
InProgress = 3,
Done = 4
}
Строковые enum’ы задаются явно:
enum Role {
Admin = 'admin',
User = 'user'
}
Обратное отображение
Для числовых enum’ов TypeScript создаёт объект с двухсторонним мэппингом, поэтому по значению можно получить имя:
enum Status {
Pending,
Done
}
Status.Pending // 0
Status[0] // 'Pending'
У строковых перечислений обратного отображения нет.
const enum
Ключевое слово const перед enum говорит компилятору «inline-ить» значения и не создавать объект в результирующем JS-коде. Это уменьшает размер бандла, но лишает возможности обратного отображения.
const enum Directions {
Up,
Down
}
const move = Directions.Up // будет подставлено число 0
Когда использовать
- Когда есть фиксированный набор состояний (статусы, роли, типы сообщений).
- Когда один и тот же набор значений используется в разных местах.
- Когда нужно более читаемое API, чем набор строк/чисел.
На собеседовании:
Упомяните, что enum — это синтаксический сахар вокруг объектов, что у них есть числовая и строковая формы, а также const enum для оптимизации.