Hi there! Are you looking for the official Deno documentation? Try docs.deno.com for all your Deno learning needs.

pipe

import { pipe } from "https://github.gh-proxy.cn/raw.githubusercontent.com/baetheus/fun/main/fn.ts";

The pipe takes a value as the first argument and composes it with subsequent function arguments, returning the result of the last function passed in. It handles and correctly types up to 10 unary functions. Beyond 10 it makes sense to break up pipe into multiple pipes.

@example
import { pipe } from "./fn.ts";

const add = (n: number) => (m: number) => m + n;
const multiply = (n: number) => (m: number) => m * n;

const result = pipe(
  1,
  add(1), // 2
  multiply(2), // 4
  add(1), // 5
  multiply(2), // 10
); // 10
function pipe<A>(a: A): A;
function pipe<A, B>(a: A, ab: (a: A) => B): B;
function pipe<A, B, C>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
): C;
function pipe<A, B, C, D>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
): D;
function pipe<A, B, C, D, E>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
): E;
function pipe<A, B, C, D, E, F>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
): F;
function pipe<A, B, C, D, E, F, G>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
): G;
function pipe<A, B, C, D, E, F, G, H>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
): H;
function pipe<A, B, C, D, E, F, G, H, I>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
): I;
function pipe<A, B, C, D, E, F, G, H, I, J>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
): J;
function pipe<A, B, C, D, E, F, G, H, I, J, K>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
jk: (j: J) => K,
): K;
function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
jk: (j: J) => K,
kl: (K: K) => L,
): L;
function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(
a: A,
ab: (a: A) => B,
bc: (b: B) => C,
cd: (c: C) => D,
de: (d: D) => E,
ef: (e: E) => F,
fg: (f: F) => G,
gh: (g: G) => H,
hi: (h: H) => I,
ij: (i: I) => J,
jk: (j: J) => K,
kl: (K: K) => L,
end: never,
): L;
function pipe(value: unknown, ...fns: AnyFn[]): unknown;
function pipe(value: unknown, ...fns: AnyFn[]): unknown;
§
pipe<A>(a: A): A
[src]

The pipe takes a value as the first argument and composes it with subsequent function arguments, returning the result of the last function passed in. It handles and correctly types up to 10 unary functions. Beyond 10 it makes sense to break up pipe into multiple pipes.

@example
import { pipe } from "./fn.ts";

const add = (n: number) => (m: number) => m + n;
const multiply = (n: number) => (m: number) => m * n;

const result = pipe(
  1,
  add(1), // 2
  multiply(2), // 4
  add(1), // 5
  multiply(2), // 10
); // 10

§Type Parameters

§Parameters

§Return Type

§
pipe<A, B>(a: A, ab: (a: A) => B): B
[src]

§Type Parameters

§Parameters

§
ab: (a: A) => B
[src]

§Return Type

§
pipe<A, B, C>(a: A, ab: (a: A) => B, bc: (b: B) => C): C
[src]

§Type Parameters

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]

§Return Type

§
pipe<A, B, C, D>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D): D
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]

§Return Type

§
pipe<A, B, C, D, E>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E): E
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]

§Return Type

§
pipe<A, B, C, D, E, F>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F): F
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G): G
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G, H>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H): H
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G, H, I>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I): I
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G, H, I, J>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J): J
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G, H, I, J, K>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J, jk: (j: J) => K): K
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]
§
jk: (j: J) => K
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G, H, I, J, K, L>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J, jk: (j: J) => K, kl: (K: K) => L): L
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]
§
jk: (j: J) => K
[src]
§
kl: (K: K) => L
[src]

§Return Type

§
pipe<A, B, C, D, E, F, G, H, I, J, K, L>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D, de: (d: D) => E, ef: (e: E) => F, fg: (f: F) => G, gh: (g: G) => H, hi: (h: H) => I, ij: (i: I) => J, jk: (j: J) => K, kl: (K: K) => L, end: never): L
[src]

§Parameters

§
ab: (a: A) => B
[src]
§
bc: (b: B) => C
[src]
§
cd: (c: C) => D
[src]
§
de: (d: D) => E
[src]
§
ef: (e: E) => F
[src]
§
fg: (f: F) => G
[src]
§
gh: (g: G) => H
[src]
§
hi: (h: H) => I
[src]
§
ij: (i: I) => J
[src]
§
jk: (j: J) => K
[src]
§
kl: (K: K) => L
[src]
§
end: never
[src]

§Return Type

§
pipe(value: unknown, ...fns: AnyFn[]): unknown
[src]

§Parameters

§
value: unknown
[src]
§
...fns: AnyFn[] optional
[src]

§Return Type

§
unknown
[src]
§
pipe(value: unknown, ...fns: AnyFn[]): unknown
[src]

§Parameters

§
value: unknown
[src]
§
...fns: AnyFn[] optional
[src]

§Return Type

§
unknown
[src]