Ответ
Enum (перечисление) в TypeScript — это способ определения набора именованных констант. Он помогает сделать код более читаемым и поддерживаемым, группируя логически связанные значения.
Пример:
enum Direction {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Right = 'RIGHT'
}
const move = (direction: Direction) => {
console.log(`Moving ${direction}`);
};
move(Direction.Up); // "Moving UP"
Особенности:
- Может быть числовым (автоинкремент) или строковым
- Поддерживает reverse mapping для числовых enum
- Может быть константным (вычисляется во время компиляции) или вычисляемым
Лучше использовать строковые enum для лучшей читаемости и сериализации.
Ответ 18+ 🔞
Слушай, а вот этот ваш Enum в TypeScript — это ж просто пиздец как удобно, ей-богу! Ну представь: есть у тебя куча констант, которые друг дружке родственники, а ты их как бомжей по помойкам раскидал. Так вот, enum — это такой блядский сборный пункт для них, чтоб в коде потом не еб*ть мозг себе и другим.
Вот смотри, как это выглядит, на примере направления:
enum Direction {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Right = 'RIGHT'
}
const move = (direction: Direction) => {
console.log(`Moving ${direction}`);
};
move(Direction.Up); // "Moving UP"
Видал? Красота же, блядь! Вместо того чтобы писать в коде магические строки 'UP', 'DOWN' и гадать, опечатку я сделал или нет, ты просто пишешь Direction.Up. И компилятор тебя уже не пошлёт нахуй, если ты накосячил.
А фишечки у него какие, овердохуища:
- Числовой он может быть — там значения сами по порядку подтягиваются, как пьяные в очередь за пивом.
- Строковой — вот как в примере. Его, кстати, чаще советуют, потому что при отладке видно не просто цифру 1, а понятное слово 'UP'. И в JSON сериализуется без всяких плясок с бубном.
- Есть ещё обратное маппирование для числовых — это когда по значению можно ключ получить, типа
Direction[1]вернёт'Up'. Хитро, да? Но со строковыми так не прокатит. - И может он быть константным (всё считается при компиляции, в рантайме его почти нет) или вычисляемым (ну тут уже по обстоятельствам).
Короче, если хочешь не выглядеть как мартышлюшка, которая переменные const UP = 1; const DOWN = 2; объявляет — юзай enum. Для читаемости — строковые. Всё, вопрос закрыт, в рот меня чих-пых.