Created
April 9, 2019 15:20
-
-
Save hoisel/0a6dbb5e189c6ff7a167ed2d7f29c3d3 to your computer and use it in GitHub Desktop.
Add generic typings to static rxjs pipe function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @license Use of this source code is governed by an MIT-style license that | |
* can be found in the LICENSE file at https://github.com/cartant/rxjs-etc | |
*/ | |
import { Observable, pipe as _pipe, UnaryFunction } from "rxjs"; | |
export function genericPipe<T>(...operations: UnaryFunction<Observable<T>, Observable<T>>[]): <R extends T>(source: Observable<R>) => Observable<R>; | |
export function genericPipe<T>(...operations: UnaryFunction<T, T>[]): <R extends T>(source: R) => R; | |
export function genericPipe<T, A>(op1: UnaryFunction<T, A>): UnaryFunction<T, A>; | |
export function genericPipe<T, A, B>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>): UnaryFunction<T, B>; | |
export function genericPipe<T, A, B, C>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>): UnaryFunction<T, C>; | |
export function genericPipe<T, A, B, C, D>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>): UnaryFunction<T, D>; | |
export function genericPipe<T, A, B, C, D, E>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>): UnaryFunction<T, E>; | |
export function genericPipe<T, A, B, C, D, E, F>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>): UnaryFunction<T, F>; | |
export function genericPipe<T, A, B, C, D, E, F, G>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>): UnaryFunction<T, G>; | |
export function genericPipe<T, A, B, C, D, E, F, G, H>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>): UnaryFunction<T, H>; | |
export function genericPipe<T, A, B, C, D, E, F, G, H, I>(op1: UnaryFunction<T, A>, op2: UnaryFunction<A, B>, op3: UnaryFunction<B, C>, op4: UnaryFunction<C, D>, op5: UnaryFunction<D, E>, op6: UnaryFunction<E, F>, op7: UnaryFunction<F, G>, op8: UnaryFunction<G, H>, op9: UnaryFunction<H, I>): UnaryFunction<T, I>; | |
export function genericPipe<T, R>(...operations: UnaryFunction<any, any>[]): UnaryFunction<T, R>; | |
export function genericPipe<T, R>(...operations: UnaryFunction<any, any>[]): UnaryFunction<T, R> { | |
return _pipe.apply(undefined, operations); | |
} | |
export const pipe = genericPipe; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Ref: https://github.com/cartant/rxjs-etc/blob/v7.2.1/source/genericPipe.ts#L8-L22