Skip to content

Function: flow() ​

flow<InitArg, InitReturn>(fn): object

Defined in: builder.ts:40

Creates function that applies given series of functions in order.

Uses a fluent builder for constructing function compositions using method chaining.

It's an alternative syntax for creating complex compositions with the flow function. Instead of nesting function calls, you can chain .andThen() calls to build your pipeline step by step, then call .create() to get the final composed function.

Unlike the typical flow function, it doesn't have a limit on the number of functions that can be chained.

Type Parameters ​

InitArg ​

InitArg

The input type of the initial function

InitReturn ​

InitReturn

The return type of the initial function

Parameters ​

fn ​

Fn<InitArg, InitReturn>

The initial function to start the composition with

Returns ​

object

A builder object with andThen() method for chaining more functions and create() method to build the final composed function

andThen() ​

andThen: <NextReturn>(nextFn) => object

Type Parameters ​

NextReturn ​

NextReturn

Parameters ​

nextFn ​

Fn<InitReturn, NextReturn>

Returns ​

object

andThen() ​

andThen: <NextReturn>(nextFn) => object

Type Parameters ​
NextReturn ​

NextReturn

Parameters ​
nextFn ​

Fn<NextReturn, NextReturn>

Returns ​

object

andThen() ​

andThen: <NextReturn>(nextFn) => object

Type Parameters ​
NextReturn ​

NextReturn

Parameters ​
nextFn ​

Fn<NextReturn, NextReturn>

Returns ​

object

andThen() ​

andThen: <NextReturn>(nextFn) => object

Type Parameters ​
NextReturn ​

NextReturn

Parameters ​
nextFn ​

Fn<NextReturn, NextReturn>

Returns ​

object

andThen() ​

andThen: <NextReturn>(nextFn) => object

Type Parameters ​
NextReturn ​

NextReturn

Parameters ​
nextFn ​

Fn<..., ...>

Returns ​

object

andThen ​

andThen: ...

create ​

create: ...

create() ​

create: () => (arg) => ...

Returns ​

(arg): ...

Parameters ​
arg ​

...

Returns ​

...

create() ​

create: () => (arg) => IsAsync<..., ...> extends true ? Promise<...> : Awaited<...>

Returns ​

(arg): IsAsync<..., ...> extends true ? Promise<...> : Awaited<...>

Parameters ​
arg ​

Awaited<InitArg>

Returns ​

IsAsync<..., ...> extends true ? Promise<...> : Awaited<...>

create() ​

create: () => (arg) => IsAsync<IsAsync<IsAsync<..., ...>, InitReturn>, NextReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Returns ​

(arg): IsAsync<IsAsync<IsAsync<..., ...>, InitReturn>, NextReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Parameters ​
arg ​

Awaited<InitArg>

Returns ​

IsAsync<IsAsync<IsAsync<..., ...>, InitReturn>, NextReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

create() ​

create: () => (arg) => IsAsync<IsAsync<false, InitReturn>, InitReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Returns ​

(arg): IsAsync<IsAsync<false, InitReturn>, InitReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

Parameters ​
arg ​

Awaited<InitArg>

Returns ​

IsAsync<IsAsync<false, InitReturn>, InitReturn> extends true ? Promise<Awaited<NextReturn>> : Awaited<NextReturn>

create() ​

create: () => (arg) => IsAsync<false, InitReturn> extends true ? Promise<Awaited<InitReturn>> : Awaited<InitReturn>

Returns ​

(arg): IsAsync<false, InitReturn> extends true ? Promise<Awaited<InitReturn>> : Awaited<InitReturn>

Parameters ​
arg ​

Awaited<InitArg>

Returns ​

IsAsync<false, InitReturn> extends true ? Promise<Awaited<InitReturn>> : Awaited<InitReturn>

Examples ​

typescript
const transform = flow((x: number) => x * 2)
  .andThen((x) => x + 1)
  .andThen((x) => x.toString())
  .create(); // (x: number) => string

const result = transform(5); // "11"
typescript
const asyncTransform = flow((x: number) => x * 2)
  .andThen(async (x) => Promise.resolve(x + 1))
  .andThen((x) => x.toString())
  .create(); // (x: number) => Promise<string>

const result = await asyncTransform(5); // "11"