《JavaScript 轻量级函数式编程》中的柯里化函数
function curry(fn,arity = fn.length) {
return (function nextCurried(prevArgs){
return function curried(nextArg){
var args = prevArgs.concat( [nextArg] );
if (args.length >= arity) {
return fn( ...args );
}
else {
return nextCurried( args );
}
};
})( [] );
}
转成TypeScript版
function curry(fn:Function,arity = fn.length) {
return (function nextCurried(prevArgs){
return function curried(nextArg: any){
var args = prevArgs.concat( [nextArg] );//这里 Error 应该写成什么样
if (args.length >= arity) {
return fn( ...args );
}
else {
return nextCurried( args );
}
};
})( [] );
}
This might be a more complicated solution. but,
it works