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

TypeScript中能否对自定义联合类型用Pick提取指定子集类型?

TypeScript 联合类型子集筛选方案

错误原因说明

  • Pick<T, K> 是针对对象类型设计的工具类型,仅支持从对象结构中选取指定属性构造新对象类型,无法直接作用于字符串联合类型,因此你的原有写法无法生效。

正确实现方式

使用 TypeScript 内置的 Extract<T, U> 工具类型即可实现需求,该类型专门用于从联合类型 T 中提取可赋值给 U 的成员,构造新的联合类型:

type Fruit = 'apple' | 'orange' | 'banana' | 'grapefruit';
type CitrusFruit = Extract<Fruit, 'orange' | 'grapefruit'>;

最终 CitrusFruit 的类型等价于 'orange' | 'grapefruit',完全匹配需求。

如果你的筛选逻辑是排除指定成员,也可以使用对应的 Exclude<T, U> 工具类型实现,示例如下:

// 排除Fruit中非柑橘类的成员,得到相同结果
type CitrusFruit = Exclude<Fruit, 'apple' | 'banana'>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:03