tamda
Version:
Practical functional programming library for TypeScript
46 lines (45 loc) • 3.44 kB
TypeScript
import { Unary } from './operators';
/**
* Object with an already supplied value that will be used to
* immediately execute `compose` or `pipe` when called.
*/
export interface WithValue<A> {
compose<B>(operator: Unary<A, B>): B;
compose<B, C>(op1: Unary<A, B>, op2: Unary<B, C>): C;
compose<B, C, D>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>): D;
compose<B, C, D, E>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>): E;
compose<B, C, D, E, F>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>): F;
compose<B, C, D, E, F, G>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>): G;
compose<B, C, D, E, F, G, H>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>): H;
compose<B, C, D, E, F, G, H, I>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>, op8: Unary<H, I>): I;
compose<B, C, D, E, F, G, H, I, J>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>, op8: Unary<H, I>, op9: Unary<I, J>): J;
compose<B, C, D, E, F, G, H, I, J, K>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>, op8: Unary<H, I>, op9: Unary<I, J>, op10: Unary<J, K>): K;
/**
* Composes a series of `Unary` operations into a single function.
*
* Performs right-to-left function composition.
*
* Opposite function composition direction of `pipe`.
*/
compose(...operators: Unary<any, any>[]): any;
pipe<B>(operator: Unary<A, B>): B;
pipe<B, C>(op1: Unary<A, B>, op2: Unary<B, C>): C;
pipe<B, C, D>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>): D;
pipe<B, C, D, E>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>): E;
pipe<B, C, D, E, F>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>): F;
pipe<B, C, D, E, F, G>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>): G;
pipe<B, C, D, E, F, G, H>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>): H;
pipe<B, C, D, E, F, G, H, I>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>, op8: Unary<H, I>): I;
pipe<B, C, D, E, F, G, H, I, J>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>, op8: Unary<H, I>, op9: Unary<I, J>): J;
pipe<B, C, D, E, F, G, H, I, J, K>(op1: Unary<A, B>, op2: Unary<B, C>, op3: Unary<C, D>, op4: Unary<D, E>, op5: Unary<E, F>, op6: Unary<F, G>, op7: Unary<G, H>, op8: Unary<H, I>, op9: Unary<I, J>, op10: Unary<J, K>): K;
/**
* Composes a series of `Unary` operations into a single function.
*
* Performs left-to-right function composition.
*
* Opposite function composition direction of `compose`.
*
* In some libraries this function is named `sequence`.
*/
pipe(...operators: Unary<any, any>[]): any;
}