TypeScript类型操作符:实现对象类型值的联合类型提取
提取对象类型字段值联合类型的实现
核心类型实现
直接基于TypeScript原生的索引访问类型能力实现,无需复杂递归或条件类型:
type ExtractValueType<T> = T[keyof T];
效果验证
使用题目给出的示例测试推导结果:
type Foo = {x: string, y: number} type Bar = ExtractValueType<Foo> // 实际推导得到 Bar = string | number,完全符合预期
实现逻辑
- 该实现是社区通用的ValueOf工具类型的标准写法:
keyof操作符会生成对象类型T所有公开键的联合类型,对示例中的Foo来说,结果就是"x" | "y" - 当索引访问的参数是键联合类型时,TypeScript会自动遍历所有键,返回每个键对应值类型的联合,刚好匹配需求。
补充说明
- 该实现天然兼容数组类型输入,传入数组时会自动返回数组元素的联合类型
- 如果需要排除特定字段(比如可选字段、只读字段),可以先对
keyof T的结果做类型过滤,再执行索引访问即可。
内容的提问来源于stack exchange,提问作者Itay Maman
相关产品推荐
相关产品推荐

