@mobily/ts-belt
Version:
🔧 Fast, modern, and practical utility library for FP in TypeScript.
80 lines (78 loc) • 2.05 kB
Flow
// @flow
/**
* Performs left-to-right function composition and returns a new function, the first argument may have any arity, the remaining arguments must be unary.
*/
declare export function flow<A: $ReadOnlyArray<mixed>, B>(
fn1: (...args: A) => B
): (...args: A) => B;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C>(
fn1: (...args: A) => B,
fn2: (arg: B) => C
): (...args: A) => C;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C, D>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D
): (...args: A) => D;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C, D, E>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D,
fn4: (arg: D) => E
): (...args: A) => E;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C, D, E, F>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D,
fn4: (arg: D) => E,
fn5: (arg: E) => F
): (...args: A) => F;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C, D, E, F, G>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D,
fn4: (arg: D) => E,
fn5: (arg: E) => F,
fn6: (arg: F) => G
): (...args: A) => G;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C, D, E, F, G, H>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D,
fn4: (arg: D) => E,
fn5: (arg: E) => F,
fn6: (arg: F) => G,
fn7: (arg: G) => H
): (...args: A) => H;
declare export function flow<A: $ReadOnlyArray<mixed>, B, C, D, E, F, G, H, I>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D,
fn4: (arg: D) => E,
fn5: (arg: E) => F,
fn6: (arg: F) => G,
fn7: (arg: G) => H,
fn8: (arg: H) => I
): (...args: A) => I;
declare export function flow<
A: $ReadOnlyArray<mixed>,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
fn1: (...args: A) => B,
fn2: (arg: B) => C,
fn3: (arg: C) => D,
fn4: (arg: D) => E,
fn5: (arg: E) => F,
fn6: (arg: F) => G,
fn7: (arg: G) => H,
fn8: (arg: H) => I,
fn9: (arg: I) => J
): (...args: A) => J;