我正在定义一个高阶函数,该函数接受要转换为具有较少参数的函数的a函数(因为我将传递第一个参数的值)。我需要以下约束条件:
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,但我不知道该怎么做。
感谢您的帮助!