37 lines
2.7 KiB
TypeScript
37 lines
2.7 KiB
TypeScript
import { Observable, ObservableInput } from '../Observable';
|
|
/**
|
|
* @param {Observable} observables the observables to get the latest values from.
|
|
* @param {Function} [project] optional projection function for merging values together. Receives all values in order
|
|
* of observables passed. (e.g. `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not passed, arrays
|
|
* will be returned.
|
|
* @description merges each value from an observable with the latest values from the other passed observables.
|
|
* All observables must emit at least one value before the resulting observable will emit
|
|
*
|
|
* #### example
|
|
* ```
|
|
* A.withLatestFrom(B, C)
|
|
*
|
|
* A: ----a-----------------b---------------c-----------|
|
|
* B: ---d----------------e--------------f---------|
|
|
* C: --x----------------y-------------z-------------|
|
|
* result: ---([a,d,x])---------([b,e,y])--------([c,f,z])---|
|
|
* ```
|
|
*/
|
|
export declare function withLatestFrom<T, R>(...args: Array<ObservableInput<any> | ((...values: Array<any>) => R)>): Observable<R>;
|
|
export interface WithLatestFromSignature<T> {
|
|
<R>(project: (v1: T) => R): Observable<R>;
|
|
<T2, R>(v2: ObservableInput<T2>, project: (v1: T, v2: T2) => R): Observable<R>;
|
|
<T2, T3, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, project: (v1: T, v2: T2, v3: T3) => R): Observable<R>;
|
|
<T2, T3, T4, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): Observable<R>;
|
|
<T2, T3, T4, T5, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): Observable<R>;
|
|
<T2, T3, T4, T5, T6, R>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): Observable<R>;
|
|
<T2>(v2: ObservableInput<T2>): Observable<[T, T2]>;
|
|
<T2, T3>(v2: ObservableInput<T2>, v3: ObservableInput<T3>): Observable<[T, T2, T3]>;
|
|
<T2, T3, T4>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>): Observable<[T, T2, T3, T4]>;
|
|
<T2, T3, T4, T5>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>): Observable<[T, T2, T3, T4, T5]>;
|
|
<T2, T3, T4, T5, T6>(v2: ObservableInput<T2>, v3: ObservableInput<T3>, v4: ObservableInput<T4>, v5: ObservableInput<T5>, v6: ObservableInput<T6>): Observable<[T, T2, T3, T4, T5, T6]>;
|
|
<R>(...observables: Array<ObservableInput<any> | ((...values: Array<any>) => R)>): Observable<R>;
|
|
<R>(array: ObservableInput<any>[]): Observable<R>;
|
|
<R>(array: ObservableInput<any>[], project: (...values: Array<any>) => R): Observable<R>;
|
|
}
|