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
<..., ...> extendstrue
?Promise
<...> :Awaited
<...>
Returns
(
arg
):IsAsync
<..., ...> extendstrue
?Promise
<...> :Awaited
<...>
Parameters
arg
Awaited
<InitArg
>
Returns
IsAsync
<..., ...> extends true
? Promise
<...> : Awaited
<...>
create()
create: () => (
arg
) =>IsAsync
<IsAsync
<IsAsync
<..., ...>,InitReturn
>,NextReturn
> extendstrue
?Promise
<Awaited
<NextReturn
>> :Awaited
<NextReturn
>
Returns
(
arg
):IsAsync
<IsAsync
<IsAsync
<..., ...>,InitReturn
>,NextReturn
> extendstrue
?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
> extendstrue
?Promise
<Awaited
<NextReturn
>> :Awaited
<NextReturn
>
Returns
(
arg
):IsAsync
<IsAsync
<false
,InitReturn
>,InitReturn
> extendstrue
?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
> extendstrue
?Promise
<Awaited
<InitReturn
>> :Awaited
<InitReturn
>
Returns
(
arg
):IsAsync
<false
,InitReturn
> extendstrue
?Promise
<Awaited
<InitReturn
>> :Awaited
<InitReturn
>
Parameters
arg
Awaited
<InitArg
>
Returns
IsAsync
<false
, InitReturn
> extends true
? Promise
<Awaited
<InitReturn
>> : Awaited
<InitReturn
>
Examples
const transform = flow((x: number) => x * 2)
.andThen((x) => x + 1)
.andThen((x) => x.toString())
.create(); // (x: number) => string
const result = transform(5); // "11"
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"