Enumeração como um tipo em TypeScript
Cada enumeração cria seu próprio
tipo de dados. Vamos, por exemplo, para
uma variável que armazena a estação atual atribuir
o tipo Season:
let current: Season;
Vamos atribuir à nossa variável o número da estação:
let current: Season = Season.Winter;
console.log(current); // 0
É possível especificar o número da estação manualmente:
let current: Season = 3;
Mas se tentarmos atribuir dados de outro tipo, por exemplo, uma string, haverá um erro:
let current: Season = 'str'; // haverá um erro
Infelizmente, o intervalo de valores não é rastreado e é possível atribuir um número que não está presente em nossa enumeração:
let current: Season = 7; // não haverá erro
Ao verificar com o operador typeof
nossa variável retornará o tipo numérico:
let current: Season = 3;
console.log(typeof current); // "number"
Resumindo, pode-se dizer que esse tipo não é verificado de forma muito rigorosa e, por isso, seu valor é questionável.