enum-nxt
v1.0.4
Published
Create enums using the latest ES spec.
Downloads
2
Readme
Introduction
This library is inspired by Java Enums, enumify, and enum. The goal was to create a JavaScript enum library that is safe, extensible, flexible, and JSON parsable. This project also uses the latest ES spec wherever possible.
Installation
Files
All distribution files can be found in the dist
folder
| Version | Description | | ------------------- | ----------- | | enum-nxt.umd.min.js | Minified version that uses UMD. Most common option. | | enum-nxt.umd.js | Unminified version that uses UMD. | | enum-nxt.js | Source code with comments. Useful if you want to use it for transpiling. |
Example Usage
import {Enum} from 'enum-nxt';
//Creating enum from arguments list
let argsEnum = new Enum('RED', 'GREEN', 'BLUE');
//Creating enum from string array
let arrayEnum = new Enum(['RED']);
//Creating enum from object with custom attributes
let objEnum = new Enum({
'RED': {foo: 1},
'BLUE': {},
'GREEN': {},
'YELLOW': {foo: 2}
});
//Member examples
objEnum.RED.foo === 1;
objEnum["RED"].foo === 1;
objEnum.RED.name === 'RED';
objEnum.size === 4;
argsEnum.GREEN.name === 'GREEN';
argsEnum.size === 3;
//Function examples
for(let [key, value] of objEnum) {}
for(let [key, value] of objEnum.entries()) {}
for(let key of objEnum.keys()) {}
for(let value of objEnum.values()) {}
var enumArray = Array.from(objEnum);
objEnum.forEach((value, key, enum) => {}, this);
let value = objEnum.RED;
objEnum.has('PURPLE') === false;
objEnum.has('RED') === true;
objEnum.has('red') === false;
objEnum.has(value) === true;
objEnum.has({}) === false;
objEnum.has(null); //Throws TypeError 'key must be of type string or Object'
objEnum.freeze();
Object.isFrozen(objEnum) === true;
objEnum.foo = 23; // throws a TypeError under strict mode
//JSON stringify and parse
var json = JSON.stringify(objEnum);
var otherEnum = new Enum(JSON.parse(json));
See also
- The source file (
src/enum.es6
) for comments - The unit tests (
src/enum.spec.es6
) for more example usage