1unitedpower: EcmaScript2015 Enumeration zum Selbermachen

JavaScript hat bekanntermaßen kein natives Syntax-Element für Enumerations. Mit der neuesten Version der Sprache ist das allerdings in 3 Zeilen selber gebastelt.

// Definition
function* Enum (name = 'Unnamed enumeration') {
  while (true) yield Symbol(name)
}

// Usage
const [cat,dog,catdog] = Enum('animal')
const [red,green,blue] = Enum('color')

// Test
console.assert(cat === cat, 'Identity violated')
console.assert(cat !== red, 'Uniqueness violated')
console.assert(cat !== dog, 'Uniqueness violated')
console.assert(cat !== catdog, 'Uniqueness violated')

// Demo
console.log(pet(cat))
console.log(pet(dog))
console.log(pet(catdog))

//: Animal -> String
function pet (animal) {
  return {
    [cat]    : 'Mauz',
    [dog]    : 'Wuff',
    [catdog] : 'Mauff'
  }[animal]
}

Mit dem Aufruf Symbol() erzeugt man jedes Mal einen neuen eindeutigen Wert. Mit der etwas abenteuerlich anmutendenden Generator-Funktion Enum kann man dann unendliche Streams von Symbolen erzeugen, das passiert im gezeigten Code jeweils einmal für die Enumeration von Tieren und von Farben. Anschließend werden aus jedem Stream drei Elemente entnommen und an die Konstanten cat,dog,catdog bzw. red,gree,blue gebunden. Wer jetzt gerade keine JavaScript-Enginge mit Unterstützung für die benötigten Features zur Hand hat, der möge es online in vollter Tracht betrachten: http://www.es6fiddle.net/il5jokw5/