string - 打字稿:字符串到枚举
问题描述
如何在 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 }]
问题是我无法从我的字符串中找到我的枚举。
谢谢您的帮助
解决方案
我认为没有办法在运行时获取枚举名称。
你最好维护一个简单的映射字符串 <-> 枚举。无论如何,这将使您的生活更轻松。
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'));
推荐阅读
- angular - 如何在角度 4 中使用管道获取独特元素
- android - 如何以编程方式从 github 下载 apk?
- sql - T-SQL (SQL Server):提取唯一的数据集/组
- angular - 条件边框颜色
- php - 如何在 PHP 中按值获取所有键的数组?
- python - python中的希尔伯特矩阵代码
- json.net - 具有未知字段名称的 RestSharp
- c# - 如何使用 DocumentDb 单元测试的过滤器模拟 DocumentClient CreateDocumentQuery?
- c++11 - 60:6:错误:没有匹配的成员函数调用“push”s.push(head);
- c# - 如何避免在 WinForms 应用程序中的多个类中声明事件处理程序名称