实现 curry 函数,把其他函数柯里化
- curry 返回一个函数fn
- 执行fn, 中间状态返回函数,如 add(1), 或者 add(1)(2)
- 最后返回执行结果,如 add(1)(2)(3)
function curry(fn:Function) {const fnArgsLen = fn.length let args:any[] = []function calc(this:any, ...newArgs:any[]) {args = [...args,...newArgs,]if (args.length < fnArgsLen) {return calc} else {return fn.apply(this, args.slice(0, fnArgsLen))}}return calc
}function add(a: number, b: number, c: number):number {return a + b + c
}const curryAdd = curry(add)
const curryAdd = curry(add)curryADD(10)(10)(10)