enumify2
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.
Difference to enumify?
enumify2
adds the initEnum
export that allows you to avoid explicit class construction and reduces the overhead of creating an enum.
The basics
Install:
npm install --save enumify2
Use:
; {}Color; console; // Color.REDconsole; // true ; // Error: Enum classes can’t be instantiated
Or (without explicit class construction):
;const Color = ;// etc...
Properties of enum classes
Enums get a static property enumValues
, which contains an Array with all enum values:
for const c of ColorenumValues console;// Output:// Color.RED// Color.GREEN// Color.BLUE
The inherited tool method enumValueOf()
maps names to values:
console; // truetrue
Properties of enum values
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.ordinal2
Adding properties to enum values
initEnum()
also accepts an object as its parameter. That enables you to add properties to enum values:
{} // Alas, data properties don’t work, because the enum// values (TicTacToeColor.X etc.) don’t exist when// the object literals are evaluated.TicTacToeColor; console; // TicTacToeColor.X
More information
- The directory
test/
contains examples.