A new frozen (immutable) object which contains a property for each key and value that returns the value.
const enum Animal {
Dog = 0,
Cat = 1,
Butterfly = 2,
Bear = 3
}
const animalMap = createEnumKeyMap<typeof Animal>({
Dog: Animal.Dog,
Cat: Animal.Cat,
Butterfly: Animal.Butterfly,
Bear: Animal.Bear
});
// You end up with an object that maps everything to the name
animalMap.Dog === "Dog"; // true
animalMap[0] === "Dog"; // true
animalMap["Dog"] === "Dog"; // true
animalMap.Cat === "Cat"; // true
animalMap[1] === "Cat"; // true
animalMap["Cat"] === "Cat"; // true
// Helper function to always return the "Name" of the type of animal
function getAnimalType(type: string | number | Animal) {
return animalMap[type];
}
Create a map object which contains both the property key and value which both map to the key, E[key] => key and E[value] => key.