我有一个枚举Animals,我正在尝试创建一个接受一个值的函数,如果它是有效的,整个枚举对象将值作为一个 emum 返回。
enum Animals {
WOLF = 'wolf',
BADGER = 'badger',
CAT = 'cat',
}
const coerseEnum = <T> (s, E: T): T | undefined => {
const keys = Object.keys(E);
const values = keys.map(k => E[k as any]);
const obj = lodash.zipObject(keys, values);
const key = lodash.findKey(obj, item => item === s);
if (!key) return undefined;
return E[key];
};
const x: Animals | undefined = coerseEnum('cat', Animals);
console.log(x);
但是,它不是投射到Animalsbut typeof Animals。