首页 > 解决方案 > 打字稿:字符串到枚举

问题描述

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

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

谢谢您的帮助

标签: stringtypescriptenums

解决方案


我认为没有办法在运行时获取枚举名称。

你最好维护一个简单的映射字符串 <-> 枚举。无论如何,这将使您的生活更轻松。

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

推荐阅读