基于通用输入的通用返回类型

时间:2019-05-15 03:47:12

标签: typescript

我想创建一个具有以下签名的函数:

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
            }
        }, {});
    }

Playground link

当前出现错误

  

找不到名称“ T”

是否可以在打字稿中执行此操作,而无需在泛型函数中显式声明该T型呢?

即。

我知道我可以通过在泛型函数中声明该错误来消除此错误:

function getObjectFromFoos<T>(arr: Foo<T>[]): { [key: string] : T} {
    {    
       //implmentation
    }


getObjectFromFoos<number>(foos); 

但是我不想这样做,因为每次我调用该函数时,都需要显式定义泛型,该泛型应该可以被推断出来。

0 个答案:

没有答案