Skip to content

curry

函数柯里化

参数

参数名参数类型参数说明
fnany需要柯里化函数
argsunknown[]fn 函数参数

源代码&使用

ts
import { curry } from '@manzhixing/utilsxy';

function add(a, b) {
 return a + b;
}
const add1 = curry(add, 1);
add1(2); // 3
ts
/*
 * @Author: Chengbotao
 * @Contact: https://github.com/chengbotao
 */
export function curry(fn: any, ...args: unknown[]) {
  const len = fn.length;
  return function (this: unknown, ...values: unknown[]) {
    const lambdaArgs = Array.prototype.slice.call(values);
    Array.prototype.push.apply(args, lambdaArgs);
    if (args.length < len) {
      return curry.call(this, fn, ...args);
    } else {
      return fn.apply(this, args);
    }
  };
}