Enumerazione come tipo in TypeScript

Ogni enumerazione crea il proprio tipo di dato. Prendiamo come esempio una variabile che memorizza la stagione corrente e assegniamole il tipo Season:

typescriptlet current: Season;

Assegniamo alla nostra variabile il numero della stagione:

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

È possibile specificare manualmente il numero della stagione:

typescriptlet current: Season = 3;

Ma se si tenta di assegnare dati di un altro tipo, ad esempio una stringa, ci sarà un errore:

typescriptlet current: Season = 'str'; // darà errore

Sfortunatamente, l'intervallo di valori non viene tracciato ed è possibile assegnare un numero assente nella nostra enumerazione:

typescriptlet current: Season = 7; // non darà errore

Durante il controllo tramite l'operatore typeof la nostra variabile restituirà il tipo numerico:

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

In conclusione, si può dire che questo tipo non viene controllato in modo molto rigoroso e quindi il suo valore è discutibile.