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

如何从TypeScript判别联合类型中提取指定键的类型?

解决办法

要从判别联合类型中获取特定成员的属性类型,你可以借助TypeScript内置的Extract工具类型,先筛选出包含目标属性的联合成员,再进行索引操作,具体有两种实现方式:

方式一:通过属性存在性筛选

直接筛选出联合类型中包含name属性的成员,再提取其类型:

type MyDUnion = { type: "anon"; name: string } | { type: "google"; idToken: string };
type Name = Extract<MyDUnion, { name: unknown }>['name']; // 类型为string

方式二:通过判别式精准筛选

利用联合类型的type判别字段,精准定位到type: "anon"的成员,再提取name的类型:

type MyDUnion = { type: "anon"; name: string } | { type: "google"; idToken: string };
type Name = Extract<MyDUnion, { type: "anon" }>['name']; // 类型为string

原理说明

直接使用MyDUnion['name']报错的原因是:TypeScript要求联合类型的索引操作必须在所有成员上都存在该属性,而你的联合类型中只有type: "anon"的成员有name,因此需要先通过Extract筛选出符合条件的成员类型,再进行索引就不会触发错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:25:19