如何在TypeScript中从数字枚举取值创建对应联合类型
实现方案
你可以直接通过索引访问枚举类型的方式得到枚举值的联合类型,代码如下:
enum Weekdays { Monday = 1, Tuesday = 2 } type WeekdaysType = typeof Weekdays[keyof typeof Weekdays] // 此时 WeekdaysType 的类型等价于 1 | 2
原理解释
typeof Weekdays会获取枚举本身的类型,内部包含了所有枚举键到枚举值的映射关系keyof typeof Weekdays会得到所有枚举键名组成的字符串联合类型,这里就是"Monday" | "Tuesday"- 最后通过索引访问的形式
typeof Weekdays[键联合类型],就会把所有键对应的枚举值提取出来组成联合类型,正好符合需求
这个方案对数值枚举、字符串枚举都通用,哪怕是没有手动赋值的默认自增数值枚举也可以正常使用。
内容的提问来源于stack exchange,提问作者Žilvinas Rudžionis
相关产品推荐
相关产品推荐

