微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我需要一个类型化 (TS) 通用咖喱函数,它需要显式调用触发器不调用提供最后一个参数

如何解决我需要一个类型化 (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 举报,一经查实,本站将立刻删除。