如何在Typescript中将字符串转换为枚举类型。 我想通过用字符串传递枚举名称来返回枚举所有元素的列表
例如:
enum Toto {A, B, C, D}
enum Autre {F, G, H}
...
...
extract(enumName: string) {
// todo
return Object.keys(definition)
.map(key => ({ value: definition[key], title: key }));
}
定义将是枚举之一。
例如,如果我运行extract('toto'),该函数必须找到Toto并将其注入Object.key并返回[{A,A},{B,B},{C,C},{ D,D}]
问题是我无法从字符串中找到枚举。
谢谢您的帮助
答案 0 :(得分:1)
我认为没有办法在运行时获取枚举名称。
最好保留一个简单的映射字符串<->枚举。无论如何,这将使您的生活更轻松。
enum Toto {A, B, C, D}
enum Autre {F, G, H}
const enumMapping: {[key: string]: any} = {
Toto: Toto,
Autre: Autre
};
const extract = (enumName: string) => {
const definition = enumMapping[enumName];
if (!definition) {
return null;
}
return Object.keys(definition)
.map(key => ({ value: definition[key], title: key }));
}
console.log(extract('Toto'));
console.log(extract('Autre'));
console.log(extract('Will return null'));