Перечисление как тип в TypeScript
Каждое перечисление создает свой собственный
тип данных. Давайте для примера для переменной,
хранящей текущий сезон присвоим тип Season
:
let current: Season;
Запишем в нашу переменную номер сезона:
let current: Season = Season.Winter;
console.log(current); // 0
Можно указать номер сезона вручную:
let current: Season = 3;
А вот если попытаться записать данные другого типа, например, строку, то будет ошибка:
let current: Season = 'str'; // будет ошибка
К сожалению, диапазон значений не отслеживается и можно записать номер, отсутствующий в нашем перечислении:
let current: Season = 7; // ошибки не будет
При проверке через оператор typeof
наша переменная отдаст числовой тип:
let current: Season = 3;
console.log(typeof current); // "number"
Подведя итог можно сказать, что такой тип проверяется не сильно строго и от этого его ценность сомнительна.