《JavaScript 轻量级函数式编程》 中的柯里化函数怎么转成TypeScript版
《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 );
}
};
})( [] );
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
This might be a more complicated solution. but,
it works
concat传数组传元素都可以,反正是拼接。逻辑上没有问题。只不过你的ts版本可能告诉你concat返回一个never[],这个应该是已经修正成T[]了。
所以你可以直接
或者按照楼上去严格限制函数的参数