给出如下模块:
export module Common.Enums {
export enum Enum1 { Item = 0 }
export enum Enum2 { Item = 0 }
export enum Enum3 { Item = 0 }
}
我想用一个字符串属性定义一个接口,该属性限制为枚举之一的名称,例如:
interface Test {
enumName: keyof Common.Enums; // <<< This doesn't work, but something like that is needed
enumName2: 'Enum1' | 'Enum2' | 'Enum3'; // <<< This does work, but is undesirable
}
但是-有很多枚举(它们都是生成的),所以我不想对'Enum1' | 'Enum2' | 'Enum3'
进行硬编码。
答案 0 :(得分:9)
Common.Enums
是运行时存在的值,而不是类型。要获取值的类型,可以使用typeof
type query operator:
interface Test {
enumName: keyof typeof Common.Enums; // "Enum1" | "Enum2" | "Enum3"
}
希望有所帮助;祝你好运!