Пералічэнне як тып у TypeScript

Кожнае пералічэнне стварае свой уласны тып даных. Давайце для прыкладу для зменнай, якая захоўвае бягучы сезон прысвоім тып Season:

typescriptlet current: Season;

Запішам у нашу зменную нумар сезона:

typescriptlet current: Season = Season.Winter;
console.log(current); // 0

Можна паказаць нумар сезона ўручную:

typescriptlet current: Season = 3;

А вось калі паспрабаваць запісаць даныя іншага тыпу, напрыклад, радок, то будзе памылка:

typescriptlet current: Season = 'str'; // будзе памылка

На жаль, дыяпазон значэнняў не адсочваецца і можна запісаць нумар, які адсутнічае ў нашым пералічэнні:

typescriptlet current: Season = 7; // памылкі не будзе

Пры праверцы праз аператар typeof наша зменная аддасць лікавы тып:

typescriptlet current: Season = 3;
console.log(typeof current); // "number"

Падвядучы вынік можна сказаць, што такі тып правяраецца не вельмі строга і ад гэтага яго каштоўнасць сумнеўная.