问题描述
我有一个使用柯里化的实现,它不会在提供最后一个参数时触发柯里化函数,而是返回一个 0-arity 回调,所有参数都已经应用。
从头开始创建这样的 javascript 函数相当简单,但我正在寻找一个具有有效 TypeScript 类型的函数。对于我的解决方案,我真的没有任何其他限制。如果已经有一个我错过的库解决方案,我很乐意使用它。如果没有,我可以从头开始实现一个简单的 curry 函数,或者从现有库(最好是 Lodash 或 Ramda,因为我的项目中已经有了它们)围绕 curry 创建某种包装器,以及派生类型来自库的类型(使用实用程序类型,甚至手动)。
以下是两个令人满意的 javascript 实现示例,但我不知道如何键入它们:
// I like this one the best,because it allows me to keep binding optional args past f.length
function evenMoreExplicitCallCurry(f) {
function currify(boundArgs,...explicitArgs) {
if (explicitArgs.length === 0) {
return f(...boundArgs);
}
return currify.bind(null,[...boundArgs,...explicitArgs]);
}
return currify.bind(null,[]);
}
function explicitCallCurry(f) {
return function currify(...args) {
if (args.length >== f.length) {
return () => f(...args);
}
return currify.bind(null,...args);
};
}
有没有简单的解决方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)