@newdash/newdash
Version:
javascript/typescript utility library
47 lines (46 loc) • 1.26 kB
TypeScript
type CurriedFunction = Function & {
placeholder: any;
};
/**
* Creates a function that accepts arguments of `func` and either invokes
* `func` returning its result, if at least `arity` number of arguments have
* been provided, or returns a function that accepts the remaining `func`
* arguments, and so on. The arity of `func` may be specified if `func.length`
* is not sufficient.
*
* **Note:** This method doesn't set the "length" property of curried functions.
*
* @since 5.5.0
* @category Function
* @param func The function to curry.
* @param arity The arity of `func`.
* @param guard Enables use as an iteratee for methods like `map`.
* @returns Returns the new curried function.
* @example
*
* ```js
* var abc = function(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 with placeholders.
* curried(1)(curry.placeholder, 3)(2);
* // => [1, 2, 3]
* ```
*/
export declare function curry<T extends Function = any>(func: T, arity?: number, guard?: any): CurriedFunction;
export declare namespace curry {
var placeholder: string | symbol;
}
export default curry;