将类型的可能值限制为枚举中的值

Leo*_*ssi 0 javascript enums interface typescript typescript-typings

这是枚举:

enum PossibleValues {
  A = 'A',
  B = 'B',
  C = 'C'
}
Run Code Online (Sandbox Code Playgroud)

这是使用枚举作为字段之一的类型:

export interface MyInterface {
  name: string;
  age: number;
  value: PossibleValues;
}
Run Code Online (Sandbox Code Playgroud)

我假设在这种情况下,因为value它应该只接受来自枚举(A、B 或 C)的值,但我可以放在那里其他值并且它工作正常。

有没有办法将可能的值限制为枚举中的值?

小智 5

您可以通过提取 MaybeValues 的类型,然后获取该类型的所有键来完成此操作,如下所示:

export interface MyInterface {
    name: string;
    age: number;
    value: keyof typeof PossibleValues;
}
Run Code Online (Sandbox Code Playgroud)

现在 value 将只有 3 个可能的值AB&C