Перечисления (enum) — это особый тип "класса", который представляет группу констант (неизменяемых переменных).
Существует два типа перечислений: строковые и числовые.
Начнём с числовых.
Числовые перечисления - По умолчанию
По умолчанию перечисления будут инициализировать первый элемент значением 0 и увеличивать значение на единицу для каждого следующего элемента:
Пример
enum CardinalDirections {
North,
East,
South,
West
}
let currentDirection = CardinalDirections.North;
// выводит 0
console.log(currentDirection);
// вызывает ошибку, так как 'North' — это не допустимая константа перечисления
currentDirection = 'North'; // Ошибка: "North" нельзя назначить типу 'CardinalDirections'.
Числовые перечисления - С инициализацией
Вы можете явно задать начальное значение первого элемента перечисления, и последующие значения будут увеличиваться автоматически:
Пример
enum CardinalDirections {
North = 1,
East,
South,
West
}
// выводит 1
console.log(CardinalDirections.North);
// выводит 4
console.log(CardinalDirections.West);
Числовые перечисления - Полностью инициализированные
Вы можете явно присвоить уникальное числовое значение каждому элементу перечисления.
В этом случае значения не будут автоматически увеличиваться:
Пример
enum StatusCodes {
NotFound = 404,
Success = 200,
Accepted = 202,
BadRequest = 400
}
// выводит 404
console.log(StatusCodes.NotFound);
// выводит 200
console.log(StatusCodes.Success);
Строковые перечисления
Перечисления могут также содержать строки.
Строковые перечисления более распространены, так как они улучшают читаемость и передают намерение разработчика.
Пример
enum CardinalDirections {
North = 'North',
East = "East",
South = "South",
West = "West"
};
// выводит "North"
console.log(CardinalDirections.North);
// выводит "West"
console.log(CardinalDirections.West);
Смешивание типов в перечислениях
Технически можно смешивать строковые и числовые значения в одном перечислении, но это не рекомендуется, так как это может снизить читаемость и увеличить вероятность ошибок.