TypeScript中的枚举名称的`keyof`

Sim*_*mon 3 typescript

给定一个像这样的模块:

export module Common.Enums {
  export enum Enum1 { Item = 0 }

  export enum Enum2 { Item = 0 }

  export enum Enum3 { Item = 0 }
}
Run Code Online (Sandbox Code Playgroud)

我想用一个字符串属性定义一个接口,该属性限制为枚举之一的名称,例如:

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

}
Run Code Online (Sandbox Code Playgroud)

但是-有很多枚举(它们都是生成的),所以我不想硬编码'Enum1' | 'Enum2' | 'Enum3'

jca*_*alz 8

Common.Enums是在运行时存在的值,而不是类型。要获取值的类型,可以使用typeof类型查询运算符

interface Test {
    enumName: keyof typeof Common.Enums;  // "Enum1" | "Enum2" | "Enum3"
}
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助;祝好运!

链接到代码