Skip to content

curryAdvanced

高级柯里化函数,支持占位符、参数重排和更灵活的参数收集。

函数签名

typescript
function curryAdvanced<T extends (...args: any[]) => any>(
  fn: T,
  arity?: number,
  placeholder?: any
): any

参数

参数名类型必填默认值说明
fnFunction-要柯里化的函数
aritynumberfn.length函数的参数数量
placeholderanyundefined占位符,用于跳过参数位置

返回值

类型说明
Function柯里化后的函数

工作原理

  1. 初始化参数数组,使用占位符填充
  2. 返回柯里化函数:
    • 接收新参数
    • 遍历新参数,填充到参数数组中:
      • 优先填充占位符位置
      • 占位符位置都填满后,追加到末尾
    • 检查是否已收集足够参数(非占位符参数 ≥ arity):
      • 是:执行原函数
      • 否:返回新的柯里化函数
  3. 递归直到收集足够参数

示例

typescript
const _ = Symbol('placeholder')
const add = (a, b, c) => a + b + c
const curriedAdd = curryAdvanced(add, 3, _)

curriedAdd(_, 2, _)(1)(3)  // 6
curriedAdd(1, _, 3)(2)      // 6

支持使用占位符跳过某些参数位置,提供更灵活的参数应用方式。