如何在TypeScript中将变量定义为枚举值类型?
在TypeScript中将变量类型指定为枚举值类型
你可以通过两种方式实现这个需求:
方式一:直接使用枚举类型
直接把变量的类型声明为枚举本身Alpha,TypeScript会自动校验变量值是否属于该枚举的有效成员:
enum Alpha { A = 1, B = 2 } const c: Alpha = 1; // 合法,1是Alpha的枚举值 // const d: Alpha = 3; // 报错,3不是Alpha的有效枚举值
方式二:提取枚举值的联合类型
如果你需要明确获取枚举值的类型集合(比如这里的1 | 2),可以通过typeof Alpha[keyof typeof Alpha]来提取:
enum Alpha { A = 1, B = 2 } // 提取枚举值的联合类型:1 | 2 type AlphaValue = typeof Alpha[keyof typeof Alpha]; const c: AlphaValue = 1; // 合法 // const d: AlphaValue = 3; // 报错
两种方式的区别在于:第一种用枚举类型Alpha,变量既可以用枚举成员(比如Alpha.A)也可以用对应的数值;第二种提取的是枚举值的具体联合类型,更精准地限定为枚举的实际值。
内容的提问来源于stack exchange,提问作者user5507535
相关产品推荐
相关产品推荐

