const validator = { get(target, name) { // eslint-disable-next-line no-prototype-builtins if (!target.hasOwnProperty(name)) { throw new Error(`"${name}" value does not exist in the enum`); } else if (typeof target[name] === 'object' && target[name] != null) { return new Proxy(target[name], validator); } else { return target[name]; } }, set(target, name, value) { throw new Error('Cannot add a new value to the enum'); } }; export function Enum(baseEnum) { return new Proxy(baseEnum, validator); }