Enumerointi tyyppinä TypeScriptissä

Jokainen enumerointi luo oman tietotyyppinsä. Otetaan esimerkiksi muuttuja, joka tallentaa nykyisen vuodenajan, ja annetaan sille tyyppi Season:

typescriptlet current: Season;

Tallennetaan muuttujaamme vuodenajan numero:

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

Vuodenajan numeron voi antaa manuaalisesti:

typescriptlet current: Season = 3;

Mutta jos yrittää tallentaa eri tyyppistä dataa, esimerkiksi merkkijonon, tulee virhe:

typescriptlet current: Season = 'str'; // tulee virhe

Valitettavasti arvoaluetta ei seurata eikä numeroiden, jotka eivät ole enumeroinnissamme, tallentaminen aiheuta virhettä:

typescriptlet current: Season = 7; // ei virhettä

Kun tarkistetaan typeof -operaattorilla, muuttujamme palauttaa numeerisen tyypin:

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

Yhteenvetona voidaan sanoa, että tällaista tyyppiä ei tarkisteta kovin tiukasti, mikä tekee sen arvon kyseenalaiseksi.