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

TypeScript:Pick工具类型能否用于联合类型而非仅接口?

问题解答:Pick工具类型与联合类型的使用误区

你遇到的错误和Pick是否适用于类型无关,核心问题是用错了Pick的适用场景:

Pick<T, K> 是专门用来从对象类型中挑选指定属性的工具类型,它的第一个参数T必须是对象类型(比如interface或者对象结构的type),但你传入的MyType是字符串字面量联合类型,不符合这个约束,才会触发type doesn't satisfy the constraint错误。

如果要从联合类型中筛选部分成员,不需要用Pick,有两种简单的解决方式:

  1. 直接显式声明需要的联合类型:
interface MyInterface {
  selection: 'something' | 'another';
}
  1. 使用Extract工具类型(TypeScript专门提供的、用于从联合类型中提取指定成员的工具):
export type MyType = 'something' | 'another' | 'else';

interface MyInterface {
  selection: Extract<MyType, 'something' | 'another'>;
}

顺便补充:Pick完全可以用于类型,只要第一个参数是对象类型就行,比如:

type User = { name: string; age: number; email: string };
type UserBasicInfo = Pick<User, 'name' | 'age'>; // 正确提取对象类型的属性

内容的提问来源于stack exchange,提问作者sir-haver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:47:07