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



这是枚举:

enum PossibleValues {
A = 'A',
B = 'B',
C = 'C'
}

这是使用枚举作为其中一个字段的类型:

export interface MyInterface {
name: string;
age: number;
value: PossibleValues;
}

我假设在这种情况下,对于value,它应该只接受enum(A、B或C(中的值,但我可以放其他值,它工作得很好。

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

您可以提取PossibleValues的类型,然后获取该类型的所有密钥,如下所示:

export interface MyInterface {
name: string;
age: number;
value: keyof typeof PossibleValues;
}

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

我找到了另一种方法,如果没有太多可能的值,它看起来很好:

export interface MyInterface {
name: string;
age: number;
value:
| PossibleValues.A
| PossibleValues.B
| PossibleValues.C
}

最新更新