我需要一个类型化 (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 (将#修改为@)