immutable javascript objects
enum
We can simulate enums with a stringly typed object:
const Colors = {
RED: 'red',
BLUE: 'blue',
GREEN: 'green'
}
And then deep freeze and export it:
((o) => {
Object.freeze(o);
Object.getOwnPropertyNames(o).forEach(function (prop) {
if (o.hasOwnProperty(prop)
&& o[prop] !== null
&& (typeof o[prop] === "object" || typeof o[prop] === "function")
&& !Object.isFrozen(o[prop])) {
deepFreeze(o[prop]);
}
});
return o;
})(Colors)
export { Colors }
