Typescript从传递的函数返回类型推断返回类型

时间:2017-01-06 15:42:43

标签: function generics typescript

我可能正在努力实现不可能的事情,但现在就去了。

我想定义一个函数(函数A),它将返回与传递给函数A的参数的新函数相同的类型。

e.g。

export function test<T> ( arg:Function ):T {
    return arg;
}

function a():string {
    return 'a';
}

function b():number {
    return 0;
}

let aVal:string = test(a);
let bVal:number = test(b);

显然,这将允许我强烈键入我的响应以解决一些编译时错误。

有没有人有任何想法或知道我是不是在做梦。

**注意:代码为了演示**一起拍了

干杯

1 个答案:

答案 0 :(得分:4)

这个怎么样?

function test<T>(arg: () => T): T {
    return arg();
}

function a(): string {
    return 'a';
}

function b(): number {
    return 0;
}

let aVal: string = test(a);
let bVal: number = test(b);

我们将arg定义为不带参数且返回类型为T的函数,而不是使用Function接口。实际类型T可以由传入的函数定义。