I\'m rebuilding an old Java project in Javascript, and realized that there\'s no good way to do enums in JS.
The best I can come up with is:
const C
Here is an Enum
factory that avoids realm issues by using a namespace and Symbol.for
:
const Enum = (n, ...v) => Object.freeze(v.reduce((o, v) => (o[v] = Symbol.for(`${n}.${v}`), o), {}));
const COLOR = Enum("ACME.Color", "Blue", "Red");
console.log(COLOR.Red.toString());
console.log(COLOR.Red === Symbol.for("ACME.Color.Red"));