You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从TypeScript索引类型推导值联合类型?

获取对象类型的值联合类型(类似keyof的反向操作)

当然可以实现!TypeScript 提供了非常简洁的方式,像你用keyof获取键联合类型那样,一键拿到对象类型的所有值的联合类型,完全不用手动枚举每个属性的取值。

核心解决方案

直接使用 X[keyof X] 就能得到你想要的 V 类型:

type X = { a: 'A', b: 'B' };
// 自动推导所有值的联合类型
type V = X[keyof X]; // 最终类型为 'A' | 'B'

原理拆解

这里分两步理解:

  1. keyof X 会生成 X 的所有键名的联合类型,也就是 'a' | 'b';
  2. 用这个键名联合类型去索引 X 类型,TypeScript 会自动把每个键对应的取值类型合并成一个联合类型,也就是 'A' | 'B'。

扩展场景:更复杂的对象类型

这种方式同样适用于属性类型多样的对象,比如:

type Product = {
  id: number;
  name: string;
  inStock: boolean;
};

// 自动得到所有属性值的类型联合
type ProductValueTypes = Product[keyof Product]; // number | string | boolean

这种写法的优势在于可维护性:如果后续修改了 X 里的属性值,V 会自动同步更新,不用手动修改联合类型的定义,完全做到了“一处修改,处处生效”。

内容的提问来源于stack exchange,提问作者WHITECOLOR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:46:16