打字稿:要枚举的字符串

时间:2019-08-26 03:16:30

标签: string typescript enums

如何在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}]

问题是我无法从字符串中找到枚举。

谢谢您的帮助

1 个答案:

答案 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'));