16 lines
486 B
JavaScript
16 lines
486 B
JavaScript
/**
|
|
* Function to curry any javascript method
|
|
* @param {Function} fn - the target function we want to curry
|
|
* @param {...[args]} acc - initial arguments
|
|
* @returns {Function|*} it will return a function until the target function
|
|
* will receive all of its arguments
|
|
*/
|
|
export default function curry(fn, ...acc) {
|
|
return (...args) => {
|
|
args = [...acc, ...args]
|
|
|
|
return args.length < fn.length ?
|
|
curry(fn, ...args) :
|
|
fn(...args)
|
|
}
|
|
} |