Typescript函数扩展接口类型
我有一个函数,它接受一个没有id属性的对象数组,并返回所有添加了id属性的对象Typescript函数扩展接口类型,typescript,generics,typescript-generics,typescript-types,Typescript,Generics,Typescript Generics,Typescript Types,我有一个函数,它接受一个没有id属性的对象数组,并返回所有添加了id属性的对象 const pickIdAndDocs = (arr) => { return arr.map(doc => ({ id: 1, ...doc })) } 现在,例如,如果我有这个接口 interface iUser { name: string; } 以及一个数组,其中包含类型为iUser let users: iUser[] = [ {name: "John&
const pickIdAndDocs = (arr) => {
return arr.map(doc => ({
id: 1,
...doc
}))
}
现在,例如,如果我有这个接口
interface iUser {
name: string;
}
以及一个数组,其中包含类型为iUser
let users: iUser[] = [ {name: "John"}, {name: "Joe"} ];
如何指定函数的返回类型pickIdAndDocs,以便它返回一个数组,其中每个项都是它所采用的输入类型的扩展类型,并带有一个添加的id属性
function pickIdAndDocs<T>(items : T[] ) : extendedT[];
函数pickIdAndDocs(items:T[]):extendedT[];
此函数可以接受任何类型的数组(始终是对象/键值对),返回带有附加id属性的所有项
还是我走错了路?谢谢:)从本质上讲,我们希望通过组合两种类型来构建新类型。一个是
{id:number}
,另一个是传递给函数的任何内容。这正是它的作用。假设我对你问题的解释是正确的,我想这就是你想要的:
用户界面{
名称:字符串;
}
输入WithId=T&{id:number};
常量pickIdAndDocs=(arr:T[]):带ID[]=>{
返回arr.map((doc)=>({
id:1,
…博士,
}));
};
让用户:用户[]=[{name:“John”},{name:“Joe”}];
const usersWithId=pickIdAndDocs(用户);
//没有警告!
usersWithId[0].id;
usersWithId[0]。名称;
//警告:类型“WithId”上不存在属性“age”。
usersWithId[0]。年龄;
这里是TS游乐场链接:本质上,我们希望通过组合两种类型来构建新类型。一个是
{id:number}
,另一个是传递给函数的任何内容。这正是它的作用。假设我对你问题的解释是正确的,我想这就是你想要的:
用户界面{
名称:字符串;
}
输入WithId=T&{id:number};
常量pickIdAndDocs=(arr:T[]):带ID[]=>{
返回arr.map((doc)=>({
id:1,
…博士,
}));
};
让用户:用户[]=[{name:“John”},{name:“Joe”}];
const usersWithId=pickIdAndDocs(用户);
//没有警告!
usersWithId[0].id;
usersWithId[0]。名称;
//警告:类型“WithId”上不存在属性“age”。
usersWithId[0]。年龄;
这里是TS游乐场链接:你使用哪种服务来创建短url?@captain yossarian我使用第三方插件,如这里所述:这看起来很棒。我会试试看。谢谢你在短url中使用哪种服务?@captain yossarian我使用第三方插件,如下所述:这看起来很棒。我会试试看。谢谢