我正在定义一个高阶函数,它接受一组函数,这些函数将被转换为具有较少一个参数的函数(因为我将为第一个参数传递一个值)。我需要以下约束:
-
-
输出的用户需要使用与调用者的函数签名匹配的参数来调用每个函数(但是没有第一个参数)
Sandbox
class MyFns {
a(one: number, s: string) {
return one + s.length;
}
b(one: number, n: number, m: number) {
return one + n + m;
}
}
interface ExpectedOutFns {
a(s: string): number;
b(n: number, m: number): number;
}
function passOne(mapOfFns) {
const transformedMap = {};
for (const k in mapOfFns) {
//any[] is wrong here - not exact enough
// can I somehow type this based on mapOfFns[k]?
transformedMap[k] = (...args: any[]) => mapOfFns[k](1, ...args);
}
return transformedMap;
}
const out: ExpectedOutFns = passOne(new MyFns()); // Error
这会导致以下错误:
类型{}不可分配给类型“ExpectedOutFns”。
类型{}中缺少属性“a”。
我也试过了
explicitly typing everything
谢谢你的帮助!