【问题标题】:Typescript: string to enum打字稿:字符串到枚举
【发布时间】:2019-08-26 03:16:30
【问题描述】:

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

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

感谢您的帮助

【问题讨论】:

  • 首先,您的代码中的definition 是什么?

标签: string typescript enums


【解决方案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'));

【讨论】:

  • 是的,我也写了一个映射,但我的目标是更动态的解决方案。感谢您的回答和您的时间
猜你喜欢
  • 1970-01-01
  • 2018-10-23
  • 2017-06-08
  • 2022-12-12
  • 2021-04-19
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 2019-10-30
相关资源
最近更新 更多