Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1x 3x | /**
* @description 函数组合。将两个或两个以上的函数组合生成一个新函数,新函数会按照栈顺序执行传入函数
* @function compose
* @param {Array.Function} funcs - 函数组成的数组
* @returns {Function} 返回一个执行函数,可传入需要处理的参数
* @author liukun <919590347@qq.com>
* @example
* import { compose } from '@wont/utils'
* const trim = (str) => str.trim()
* const toLowerCase = (str) => str.toLowerCase()
* const split = (str, sep = ',') => str.split(sep)
* const getResult = compose([trim, toLowerCase, split])
* getResult('a,b,c ') // returns [a, b, c]
*/
type Fn = (...rest: any[]) => any
export function compose(funcs: Fn[]): Fn {
return (param) => funcs.reduce((arg, fn) => fn(arg), param);
}
|