declare const PLACEHOLDER: { __ut2_curry_ph__: null; }; type Placeholder = typeof PLACEHOLDER; interface Curry { (func: (t1: T1) => R, arity?: number): CurriedFunction1; (func: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2; (func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3; (func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4; (func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): CurriedFunction5; (func: (...args: any[]) => any, arity?: number): (...args: any[]) => any; placeholder: Placeholder; _: Placeholder; } interface CurriedFunction1 { (t1: T1): R; (t1: Placeholder): CurriedFunction1; (): CurriedFunction1; } interface CurriedFunction2 { (t1: Placeholder, t2: T2): CurriedFunction1; (t1: T1, t2: T2): R; (t1: T1): CurriedFunction1; (t1: Placeholder): CurriedFunction2; (): CurriedFunction2; } interface CurriedFunction3 { (t1: Placeholder, t2: Placeholder, t3: T3): CurriedFunction2; (t1: Placeholder, t2: T2, t3: T3): CurriedFunction1; (t1: T1, t2: Placeholder, t3: T3): CurriedFunction1; (t1: T1, t2: T2, t3: T3): R; (t1: Placeholder, t2: T2): CurriedFunction2; (t1: T1, t2: T2): CurriedFunction1; (t1: T1): CurriedFunction2; (t1: Placeholder): CurriedFunction3; (): CurriedFunction3; } interface CurriedFunction4 { (t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction3; (t1: Placeholder, t2: Placeholder, t3: T3, t4: T4): CurriedFunction2; (t1: Placeholder, t2: T2, t3: Placeholder, t4: T4): CurriedFunction2; (t1: T1, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction2; (t1: T1, t2: T2, t3: Placeholder, t4: T4): CurriedFunction1; (t1: T1, t2: Placeholder, t3: T3, t4: T4): CurriedFunction1; (t1: Placeholder, t2: T2, t3: T3, t4: T4): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4): R; (t1: Placeholder, t2: Placeholder, t3: T3): CurriedFunction3; (t1: T1, t2: Placeholder, t3: T3): CurriedFunction2; (t1: Placeholder, t2: T2, t3: T3): CurriedFunction2; (t1: T1, t2: T2, t3: T3): CurriedFunction1; (t1: Placeholder, t2: T2): CurriedFunction3; (t1: T1, t2: T2): CurriedFunction2; (t1: T1): CurriedFunction3; (t1: Placeholder): CurriedFunction4; (): CurriedFunction4; } interface CurriedFunction5 { (t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction4; (t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: T4, t5: T5): CurriedFunction3; (t1: Placeholder, t2: Placeholder, t3: T3, t4: Placeholder, t5: T5): CurriedFunction3; (t1: Placeholder, t2: T2, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction3; (t1: T1, t2: Placeholder, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction3; (t1: Placeholder, t2: Placeholder, t3: T3, t4: T4, t5: T5): CurriedFunction2; (t1: Placeholder, t2: T2, t3: Placeholder, t4: T4, t5: T5): CurriedFunction2; (t1: Placeholder, t2: T2, t3: T3, t4: Placeholder, t5: T5): CurriedFunction2; (t1: T1, t2: Placeholder, t3: Placeholder, t4: T4, t5: T5): CurriedFunction2; (t1: T1, t2: Placeholder, t3: T3, t4: Placeholder, t5: T5): CurriedFunction2; (t1: T1, t2: T2, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: Placeholder, t5: T5): CurriedFunction1; (t1: T1, t2: T2, t3: Placeholder, t4: T4, t5: T5): CurriedFunction1; (t1: T1, t2: Placeholder, t3: T3, t4: T4, t5: T5): CurriedFunction1; (t1: Placeholder, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; (t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction4; (t1: Placeholder, t2: Placeholder, t3: T3, t4: T4): CurriedFunction3; (t1: Placeholder, t2: T2, t3: Placeholder, t4: T4): CurriedFunction3; (t1: T1, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction3; (t1: T1, t2: T2, t3: Placeholder, t4: T4): CurriedFunction2; (t1: T1, t2: Placeholder, t3: T3, t4: T4): CurriedFunction2; (t1: Placeholder, t2: T2, t3: T3, t4: T4): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1; (t1: Placeholder, t2: Placeholder, t3: T3): CurriedFunction4; (t1: T1, t2: Placeholder, t3: T3): CurriedFunction3; (t1: Placeholder, t2: T2, t3: T3): CurriedFunction3; (t1: T1, t2: T2, t3: T3): CurriedFunction2; (t1: Placeholder, t2: T2): CurriedFunction4; (t1: T1, t2: T2): CurriedFunction3; (t1: T1): CurriedFunction4; (t1: Placeholder): CurriedFunction5; (): CurriedFunction5; } /** * 创建一个函数。该函数接受 `func` 参数,在提供的参数数量达到 `arity` 后调用 `func` 并返回其结果。 * * `curry._` 或 `curry.placeholder` 可用作参数的占位符。 * * @function * @alias module:Function.curry * @since 1.8.0 * @param {Function} func 需要柯里化的函数。 * @param {number} [arity] 指定参数数量。默认值为 `func.length`。 * @returns {Function} 新的柯里化函数。 * @example * * function abc(a, b, c){ * return [a, b, c]; * } * * var curried = curry(abc); * * curried(1)(2)(3); // [1, 2, 3] * * curried(1, 2)(3); // [1, 2, 3] * * curried(1, 2, 3); // [1, 2, 3] * * curried(1)(curry._, 3)(2); // [1, 2, 3] * * curried(curry._, curry._, 3)(curry._, 2)(1); // [1, 2, 3] * */ declare const curry: Curry; export default curry;