如何解决我需要一个类型化 (TS) 通用咖喱函数,它需要显式调用触发器不调用提供最后一个参数
我有一个使用柯里化的实现,它不会在提供最后一个参数时触发柯里化函数,而是返回一个 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 举报,一经查实,本站将立刻删除。