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

TypeScript中能否无需预定义类型直接用Pick选取对象键值对作为类型?

直接从对象字面量使用Pick工具类型的可行性

当然可以!你写的第二种写法完全合法,而且和预定义类型再用Pick的效果完全一致。

TypeScript里的Pick工具类型只要求第一个参数是任意合法的类型,而对象字面量本身就可以直接作为匿名类型来使用——不需要提前给它起个名字再引用。所以你直接把{option: string, value:string, url:string}作为Pick的第一个参数,从中选取"option" | "value"这两个键,完全符合TypeScript的语法规则。

对比两种写法的适用场景:

  • 第一种是先定义命名类型variableType,再基于它做选取,适合这个源类型需要被多次复用的场景,代码可读性和维护性更好;
  • 第二种是直接内联匿名对象类型做Pick,适合只需要一次性使用这个源类型的场景,写法更简洁,省去了额外的类型定义步骤。

两种写法都会让TypeScript正确检查数组中每个对象的结构,确保只包含option和value属性,类型校验的效果完全相同。

预定义类型的写法

/** 从预定义类型选取 */
type variableType = {option: string, value:string, url:string}
const variable: Pick<variableType, "option" | "value">[] = [
  { option: 'a', value: 'a_v', },
  { option: 'b', value: 'b_v', },
];
console.log(variable)

直接内联对象类型的写法

const variable: Pick<{option: string, value:string, url:string}, "option" | "value">[] = [
  { option: 'a', value: 'a_v', },
  { option: 'b', value: 'b_v', },
];
console.log(variable)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:39:10