Jaká je preferovaná syntaxe pro definování výčtů v JavaScriptu? Něco jako:
my.namespace.ColorEnum = { RED : 0, GREEN : 1, BLUE : 2 } // later on if(currentColor == my.namespace.ColorEnum.RED) { // whatever }
Nebo existuje vhodnější idiom?
Odpověď
Od 1.8.5 je možné předmět zapečetit a zmrazit, takže definujte výše uvedené jako:
const DaysEnum = Object.freeze({"monday":1, "tuesday":2, "wednesday":3, ...})
nebo
const DaysEnum = {"monday":1, "tuesday":2, "wednesday":3, ...} Object.freeze(DaysEnum)
a voila! JS výčty.
To vám však nebrání v přiřazení nežádoucí hodnoty proměnné, což je často hlavním cílem výčtů:
let day = DaysEnum.tuesday day = 298832342 // goes through without any errors
Jedním ze způsobů, jak zajistit vyšší stupeň bezpečnosti typu (pomocí výčtů nebo jinak), je použít nástroj jako TypeScript nebo Flow.
Zdroj
Citáty nejsou potřeba, ale nechal jsem si je kvůli konzistenci.