diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts index c409e2621..7fdf880f5 100644 --- a/lodash/lodash-tests.ts +++ b/lodash/lodash-tests.ts @@ -4891,10 +4891,34 @@ module TestDelay { } // _.flow -var testFlowSquareFn = (n: number) => n * n; -var testFlowAddFn = (n: number, m: number) => n + m; -result = _.flow<(n: number, m: number) => number>(testFlowAddFn, testFlowSquareFn)(1, 2); -result = _(testFlowAddFn).flow<(n: number, m: number) => number>(testFlowSquareFn).value()(1, 2); +module TestFlow { + let Fn1: (n: number) => number; + let Fn2: (m: number, n: number) => number; + + { + let result: (m: number, n: number) => number; + + result = _.flow<(m: number, n: number) => number>(Fn1, Fn2); + result = _.flow<(m: number, n: number) => number>(Fn1, Fn1, Fn2); + result = _.flow<(m: number, n: number) => number>(Fn1, Fn1, Fn1, Fn2); + } + + { + let result: _.LoDashImplicitObjectWrapper<(m: number, n: number) => number>; + + result = _(Fn1).flow<(m: number, n: number) => number>(Fn2); + result = _(Fn1).flow<(m: number, n: number) => number>(Fn1, Fn2); + result = _(Fn1).flow<(m: number, n: number) => number>(Fn1, Fn1, Fn2); + } + + { + let result: _.LoDashExplicitObjectWrapper<(m: number, n: number) => number>; + + result = _(Fn1).chain().flow<(m: number, n: number) => number>(Fn2); + result = _(Fn1).chain().flow<(m: number, n: number) => number>(Fn1, Fn2); + result = _(Fn1).chain().flow<(m: number, n: number) => number>(Fn1, Fn1, Fn2); + } +} // _.flowRight module TestFlowRight { diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts index 253107c7f..ba8bc028f 100644 --- a/lodash/lodash.d.ts +++ b/lodash/lodash.d.ts @@ -8491,6 +8491,7 @@ declare module _ { /** * Creates a function that returns the result of invoking the provided functions with the this binding of the * created function, where each successive invocation is supplied the return value of the previous. + * * @param funcs Functions to invoke. * @return Returns the new function. */ @@ -8500,10 +8501,17 @@ declare module _ { interface LoDashImplicitObjectWrapper { /** * @see _.flow - **/ + */ flow(...funcs: Function[]): LoDashImplicitObjectWrapper; } + interface LoDashExplicitObjectWrapper { + /** + * @see _.flow + */ + flow(...funcs: Function[]): LoDashExplicitObjectWrapper; + } + //_.flowRight interface LoDashStatic { /**