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