this forking changed Enum's toString() function to just return case's name (without class name)
A JavaScript library for enums. To be used by transpiled ES6 (e.g. via Babel).
The approach taken by Enumify is heavily inspired by Java enums.
Install:
npm install enumify
Use:
import {Enum} from 'enumify'; class Color extends Enum {} Color.initEnum(['RED', 'GREEN', 'BLUE']); console.log(Color.RED); // Color.RED console.log(Color.GREEN instanceof Color); // true new Color(); // Error: Enum classes can’t be instantiated
Enums get a static property enumValues, which contains an Array with all enum values:
for (const c of Color.enumValues) { console.log(c); } // Output: // Color.RED // Color.GREEN // Color.BLUE
The inherited tool method enumValueOf() maps names to values:
console.log(Color.enumValueOf('RED') === Color.RED); // true true
Enumify adds two properties to every enum value:
-
name: the name of the enum value.> Color.BLUE.name 'BLUE' -
ordinal: the position of the enum value within the ArrayenumValues.> Color.BLUE.ordinal 2
initEnum() also accepts an object as its parameter. That enables you to add properties to enum values:
class TicTacToeColor extends Enum {} // Alas, data properties don’t work, because the enum // values (TicTacToeColor.X etc.) don’t exist when // the object literals are evaluated. TicTacToeColor.initEnum({ O: { get inverse() { return TicTacToeColor.X }, }, X: { get inverse() { return TicTacToeColor.O }, }, }); console.log(TicTacToeColor.O.inverse); // TicTacToeColor.X
- The directory
test/contains examples.