我可能在努力实现不可能的目标,但我要说的是。
我想定义一个函数(函数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);

显然,这将允许我强烈地为某些编译时错误输入响应。
有谁有什么想法或者知道我只是在做梦吗?。
**注:代码拼凑在一起演示**
干杯

最佳答案

这个怎么样?

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类型的函数。然后,实际的t类型可以由传入的函数定义。

10-05 20:51
查看更多