打字稿从传递的函数返回类型推断返回类型

Jon*_*eld 5 generics function typescript

我可能正在努力实现不可能的事情,但在这里。

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

例如

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);
Run Code Online (Sandbox Code Playgroud)

显然,这将允许我为某些编译时错误强烈输入我的响应。

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

** 注意:代码放在一起用于演示 **

干杯

tos*_*skv 5

这个怎么样?

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);
Run Code Online (Sandbox Code Playgroud)

我们没有使用 Function 接口,而是将 arg 定义为一个不带参数并返回类型 T 的函数。 然后可以通过传入的函数定义实际的类型 T。