我正在尝试在打字稿中提取数字枚举的枚举成员,但 window[name] 确实返回了一个未定义的对象。
export enum MyEnum {
MemberOne = 0,
MemberTwo = 1
}
export class ObjectUtils {
public static GetEnumMembers(name: string): Array<string> {
let enumInstance = window[name];
return Object.keys(enumInstance).map((k: any) => enumInstance[k]).filter((x: any) => typeof (x) == "string");
}
}
所以现在我像这样调用 GetEnumMembers 方法:
ObjectUtils.GetEnumMembers("MyEnum"(;
枚举实例结果未定义。
编辑:我想返回一个带有 ["MemberOne"、"MemberTwo"] 的字符串数组
导出
的成员不会添加到window
,除非您自己添加它们。您可以重构代码以接受枚举本身而不是枚举名称:
export enum MyEnum {
MemberOne = 0,
MemberTwo = 1
}
// Some other file
import { MyEnum } from "./MyEnum"
class ObjectUtils {
public static GetEnumMembers(e: {
[key: string]: any
}): Array<string> {
return Object.keys(e).map((k: any) => e[k]).filter((x: any) => typeof (x) == "string");
}
}
// And use it like:
console.log(ObjectUtils.GetEnumMembers(MyEnum));