3
A
回答
5
打字稿枚举:
enum MyEnum {
First, Second
}
被transpiled到JavaScript对象:
var MyEnum;
(function (MyEnum) {
MyEnum[MyEnum["First"] = 0] = "First";
MyEnum[MyEnum["Second"] = 1] = "Second";
})(MyEnum || (MyEnum = {}));
您可以从window["EnumName"]
得到enum
例如:
const MyEnumInstance = window["MyEnum"];
接下来你可以用枚举成员的值:
个const enumMemberValues: number[] = Object.keys(MyEnumInstance)
.map((k: any) => MyEnumInstance[k])
.filter((v: any) => typeof v === 'number').map(Number);
而枚举成员与名称:
const enumMemberNames: string[] = Object.keys(MyEnumInstance)
.map((k: any) => MyEnumInstance[k])
.filter((v: any) => typeof v === 'string');
也见How to programmatically enumerate an enum type in Typescript 0.9.5?
+0
窗口[enumname]不起作用,也许是因为我们使用命名空间。但“eval(enumname)”确实有效。 –
2
作为替代window
的办法,其他的答案提供,你可以做到以下几点:
enum SomeEnum { A, B }
let enumValues:Array<string>= [];
for(let value in SomeEnum) {
if(typeof SomeEnum[value] === 'number') {
enumValues.push(value);
}
}
enumValues.forEach(v=> console.log(v))
//A
//B
相关问题
- 1. 获取枚举并发送枚举值
- 2. 字符串枚举
- 3. 通过名称获取java枚举
- 4. 获取枚举值
- 5. 枚举值获取?
- 6. 字符串转换为枚举的枚举名
- 7. 枚举值碰撞枚举名
- 8. 枚举的返回列表从字符串常量枚举的名字值
- 9. 获取枚举名称
- 10. 获取枚举名蟒蛇
- 11. 多个枚举字符串
- 12. 字符串到枚举C++
- 13. C++ Bitflaged枚举字符串
- 14. NoSql:枚举vs字符串
- 15. 枚举到字符串C++
- 16. 枚举字符串匹配
- 17. 获取基于枚举值
- 18. 获取枚举的INT值[]
- 19. 如何获取枚举值?
- 20. C++通过枚举
- 21. 其价值获取枚举类名
- 22. QDox获取枚举值名称
- 23. PyQt允许枚举值和字符串
- 24. Java MyBatis枚举字符串值
- 25. 缺失值或枚举空字符串
- 26. ASP.NET中的枚举和字符串值
- 27. 获取枚举标志的所有枚举名称
- 28. 通过指针枚举NSString字符
- 29. 如何将字符串项目放在一个枚举枚举的枚举映射的字符串?
- 30. Java的枚举:一个内有多个字符串枚举
你可以使用反射,像这样的东西http://stackoverflow.com/questions/15338610/dynamically-loading-a-typescript-class-re挠曲换打字稿。无论如何,我首先会想,如果这是正确的方式,或者你可以以“正常”的方式访问它 – iberbeu