TypeScript中如何从自定义类型提取嵌套属性类型?
解决方案:从已有类型中提取属性类型作为函数参数类型
当然可以实现这个需求!在TypeScript里,你可以利用索引访问类型(Index Access Types)来提取已有类型中某个属性的类型,完美替代直接写string[]的写法。
具体用法
你只需要用目标类型名加上方括号,把属性名以字符串字面量的形式放在括号里就行(注意属性名必须加引号)。对应到你的代码,就是把string[]替换成Inputs['items']:
type Inputs = { foo: string; items: string[]; }; // 用索引访问类型提取Inputs中items的类型 const myFunction = (items: Inputs['items']) => { // ... 你的函数逻辑 }
为什么这么写更好
这种写法的优势在于可维护性:如果以后你修改了Inputs里items的类型(比如从string[]改成number[]或者自定义数组类型),函数参数的类型会自动同步更新,不需要你手动修改函数的类型定义,减少了重复代码和出错的概率。
内容的提问来源于stack exchange,提问作者Evanss




