我想创建一个具有以下签名的函数:
interface Foo<T> {
name: string;
value: T;
}
const foos: Foo<number>[] = [
{ name: "a", value: 1 },
{ name: "b", value: 2 }
];
function getObjectFromFoos(arr: Foo<T>[]): { [key: string] : T} {
return arr.reduce((acc, cur) => {
return {
...acc,
[cur.name]: cur.value
}
}, {});
}
当前出现错误
找不到名称“ T”
是否可以在打字稿中执行此操作,而无需在泛型函数中显式声明该T型呢?
即。
我知道我可以通过在泛型函数中声明该错误来消除此错误:
function getObjectFromFoos<T>(arr: Foo<T>[]): { [key: string] : T} {
{
//implmentation
}
getObjectFromFoos<number>(foos);
但是我不想这样做,因为每次我调用该函数时,都需要显式定义泛型,该泛型应该可以被推断出来。