@@ -2,6 +2,7 @@ import {Observable} from '../Observable';
22import { ArrayObservable } from '../observable/fromArray' ;
33import { CombineLatestOperator } from './combineLatest-support' ;
44import { isArray } from '../util/isArray' ;
5+ import { ObservableOrPromise , ArrayOrIterator } from '../types' ;
56
67/**
78 * Combines the values from this observable with values from observables passed as arguments. This is done by subscribing
@@ -13,18 +14,57 @@ import {isArray} from '../util/isArray';
1314 * @returns {Observable } an observable of other projected values from the most recent values from each observable, or an array of each of
1415 * the most recent values from each observable.
1516 */
16- export function combineLatest < R > ( ...observables : Array < Observable < any > |
17- Array < Observable < any > > |
18- ( ( ...values : Array < any > ) => R ) > ) : Observable < R > {
19- let project : ( ...values : Array < any > ) => R = null ;
17+ export function combineLatest < T , TResult > ( project : ( v1 : T ) => TResult ) : Observable < TResult > ;
18+ export function combineLatest < T , TResult > ( project : ( v1 : T ) => TResult ) : Observable < TResult > ;
19+ export function combineLatest < T , T2 > ( second : ObservableOrPromise < T2 > ) : Observable < [ T , T2 ] > ;
20+ export function combineLatest < T , T2 > ( array : [ ObservableOrPromise < T2 > ] ) : Observable < [ T , T2 ] > ;
21+ export function combineLatest < T , T2 , TResult > ( second : ObservableOrPromise < T2 > , project : ( v1 : T , v2 : T2 ) => TResult ) : Observable < TResult > ;
22+ export function combineLatest < T , T2 , TResult > ( second : ObservableOrPromise < T2 > , project : ( v1 : T , v2 : T2 ) => TResult ) : Observable < TResult > ;
23+ export function combineLatest < T , T2 , TResult > ( array : [ ObservableOrPromise < T2 > ] , project : ( v1 : T , v2 : T2 ) => TResult ) : Observable < TResult > ;
24+ export function combineLatest < T , T2 , T3 > ( second : ObservableOrPromise < T2 > , third : ObservableOrPromise < T3 > ) : Observable < [ T , T2 , T3 ] > ;
25+ export function combineLatest < T , T2 , T3 > ( second : ObservableOrPromise < T2 > , third : ObservableOrPromise < T3 > ) : Observable < [ T , T2 , T3 ] > ;
26+ export function combineLatest < T , T2 , T3 > ( second : ArrayOrIterator < T2 > , third : ObservableOrPromise < T3 > ) : Observable < [ T , T2 , T3 ] > ;
27+ export function combineLatest < T , T2 , T3 > ( second : ArrayOrIterator < T2 > , third : ArrayOrIterator < T3 > ) : Observable < [ T , T2 , T3 ] > ;
28+ export function combineLatest < T , T2 , T3 > ( second : ArrayOrIterator < T2 > , third : ArrayOrIterator < T3 > ) : Observable < [ T , T2 , T3 ] > ;
29+ export function combineLatest < T , T2 , T3 > ( second : ObservableOrPromise < T2 > , third : ArrayOrIterator < T3 > ) : Observable < [ T , T2 , T3 ] > ;
30+ export function combineLatest < T , T2 , T3 > ( second : ObservableOrPromise < T2 > , third : ArrayOrIterator < T3 > ) : Observable < [ T , T2 , T3 ] > ;
31+ export function combineLatest < T , T2 , T3 > ( second : ArrayOrIterator < T2 > , third : ObservableOrPromise < T3 > ) : Observable < [ T , T2 , T3 ] > ;
32+ export function combineLatest < T , T2 , T3 > ( array : [ ObservableOrPromise < T2 > , ObservableOrPromise < T3 > ] ) : Observable < [ T , T2 , T3 ] > ;
33+ export function combineLatest < T , T2 , T3 , TResult > ( second : ObservableOrPromise < T2 > , third : ObservableOrPromise < T3 > ,
34+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
35+ export function combineLatest < T , T2 , T3 , TResult > ( second : ObservableOrPromise < T2 > , third : ObservableOrPromise < T3 > ,
36+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
37+ export function combineLatest < T , T2 , T3 , TResult > ( second : ArrayOrIterator < T2 > , third : ObservableOrPromise < T3 > ,
38+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
39+ export function combineLatest < T , T2 , T3 , TResult > ( second : ArrayOrIterator < T2 > , third : ArrayOrIterator < T3 > ,
40+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
41+ export function combineLatest < T , T2 , T3 , TResult > ( second : ArrayOrIterator < T2 > , third : ArrayOrIterator < T3 > ,
42+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
43+ export function combineLatest < T , T2 , T3 , TResult > ( second : ObservableOrPromise < T2 > , third : ArrayOrIterator < T3 > ,
44+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
45+ export function combineLatest < T , T2 , T3 , TResult > ( second : ObservableOrPromise < T2 > , third : ArrayOrIterator < T3 > ,
46+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
47+ export function combineLatest < T , T2 , T3 , TResult > ( second : ArrayOrIterator < T2 > , third : ObservableOrPromise < T3 > ,
48+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
49+ export function combineLatest < T , T2 , T3 , TResult > ( array : [ ObservableOrPromise < T2 > , ObservableOrPromise < T3 > ] ,
50+ project : ( v1 : T , v2 : T2 , v3 : T3 ) => TResult ) : Observable < TResult > ;
51+ export function combineLatest < T , TResult > ( array : ObservableOrPromise < any > [ ] , project ?: Function ) : Observable < TResult [ ] > ;
52+ export function combineLatest < T > ( ...observables : Array < ObservableOrPromise < T > > ) : Observable < T [ ] > ;
53+ export function combineLatest < T > ( ...observables : Array < ArrayOrIterator < T > > ) : Observable < T [ ] > ;
54+ export function combineLatest < T , R > ( ...observables : Array < ObservableOrPromise < T > | ( ( ...values : Array < T > ) => R ) > ) : Observable < R > ;
55+ export function combineLatest < T , R > ( ...observables : Array < ArrayOrIterator < T > | ( ( ...values : Array < T > ) => R ) > ) : Observable < R > ;
56+ export function combineLatest < R > ( ...observables : Array < any | Observable < any > |
57+ Array < Promise < any > > |
58+ ( ( ...values : Array < any > ) => R ) > ) : Observable < R > {
59+ let project : ( ...values : Array < any > ) => R = null ;
2060 if ( typeof observables [ observables . length - 1 ] === 'function' ) {
2161 project = < ( ...values : Array < any > ) => R > observables . pop ( ) ;
2262 }
2363
2464 // if the first and only other argument besides the resultSelector is an array
2565 // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`
2666 if ( observables . length === 1 && isArray ( observables [ 0 ] ) ) {
27- observables = < Array < Observable < any > > > observables [ 0 ] ;
67+ observables = < any > observables [ 0 ] ;
2868 }
2969
3070 observables . unshift ( this ) ;
0 commit comments