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
相关产品推荐
相关产品推荐

