Search Docs
currying
创建一个灵活的柯里化函数,具有参数累积、自动重置能力和可选执行触发条件。
import { currying } from 'funtool'; // 基本用法,收集3个参数后自动执行 const sum = currying({ fn: (...args) => args.reduce((a, b) => a + b, 0), done: args => args.length >= 3 }); sum(1)(2)(3); // 自动执行 → 6 // 手动执行使用value() const product = currying({ fn: (...args) => args.reduce((a, b) => a * b, 1) }); product(2)(3)(4).value(); // → 24 // 链式转换 const result = product(1)(2)(3) .map(x => x * 2) .filter(x => x > 2) .value(); // → 24
function currying<Args extends any[], R>(options: { fn: (...args: Args) => R; done?: (args: Args) => boolean; }): CurriedFunction<Args, R>
options.fn
options.done
返回一个可链式调用的函数,包含:
.map()
.filter()
.value()
valueOf()
toString()
this