enumitron
v0.0.2
Published
An enumeration class written in TypeScript
Downloads
2
Maintainers
Readme
Enumitron
Generate enumerations in many different forms.
This package can be used to create type-safe enumerations, and retrieve them as a dictionary, as an array of id's, as an array of names, or as an array of objects. You can also lookup a name by id.
Usage
import Enumitron from "enumitron";
const numbers = [
{ id: 1, name: "One" },
{ id: 2, name: "Two" },
];
const numbersEnum = new Enumitron(numbers);
Constraints
All enums are required to have unique names and ids. If there are objects with duplicate names or ids in the array that is passed into the Enumitron constructor, an error will be thrown.
Any additional key/value pairs contained in the objects you pass in will be preserved. The values can be of any type.
Getters
asDictionary
numbersEnum.asDictionary;
/* returns...
{
One: { id: 1, name: 'One' },
Two: { id: 2, name: 'Two' }
}
*/
asIds
numbersEnum.asIds;
// returns [1, 2]
asNames
numbersEnum.asNames;
// returns ['One', 'Two'];
asObjects
numbersEnum.asObjects;
// returns [{ id: 1, name: 'One' }, { id: 2, name: 'Two' }];
Methods
getNameById
numbersEnum.getNameById(1);
// returns 'One';
If a name is not found at the given id, an error will be thrown.
Additional Properties
You can include more than just id
and name
into an enumeration object. Whatever properties you include will be preserved and returned when enum.asObject
or enum.asDictionary
is called.
import Enumitron from "enumitron";
const numbers = [
{ id: 1, name: "One", translations: { german: "Ein", spanish: "Uno" } },
{ id: 2, name: "Two", translations: { german: "Zwei", spanish: "Dos" } },
];
const numbersEnum = new Enumitron(numbers);
numbersEnum.asObjects;
/*
returns
[
{ id: 1, name: "One", translations: { german: "Ein", spanish: "Uno" } },
{ id: 2, name: "Two", translations: { german: "Zwei", spanish: "Dos" } },
]
*/
Iteration
To make retrieval of enumerations more streamlined, the Enumitron class is implemented as a interable class. This allows you to access properties of the class at their indexes, and perform loops on the class.
For Loop
for (let i = 0; i < numbersEnum.length; i++) {
doThingWithEnum(numbersEnum[i]);
}
For Of Loop
for (let item of numbersEnum) {
doThingWithEnum(item);
}
Index Access
numbersEnum[1];
// returns { id: 2, name: 'Two' }