Απαρίθμηση ως τύπος στο 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"

Συνοψίζοντας, μπορούμε να πούμε ότι ένας τέτοιος τύπος ελέγχεται όχι πολύ αυστηρά και γι' αυτό η αξία του είναι αμφίβολη.