如何使用TypeScript提取枚举值类型得到目标联合类型?
从TypeScript枚举中提取值的联合类型解决方案
直接使用code[keyof typeof code]即可获取你需要的联合类型,具体实现如下:
首先是你的原枚举代码:
enum code { a = 10, b = 20, c = "abc" }
定义目标类型:
type IWantGet = code[keyof typeof code];
此时IWantGet的类型会被TypeScript推断为10 | 20 | "abc",完全符合你的需求。
原理说明
typeof code会获取枚举对应的对象类型,包含所有枚举键值对的结构信息;keyof typeof code得到枚举所有键名组成的联合类型(即"a" | "b" | "c");- 通过索引访问
code[keyof typeof code],会遍历所有键对应的枚举值,最终组合成这些值的联合类型。
这种方法对异构枚举(同时包含数字、字符串值)、纯数字枚举、纯字符串枚举都通用,是提取枚举值类型的标准方式。
内容的提问来源于stack exchange,提问作者tomsma
相关产品推荐
相关产品推荐

