Skip to content

Commit 469e6f6

Browse files
style(typings): Updated for several types
1 parent 029206c commit 469e6f6

12 files changed

+714
-201
lines changed

src/Observable.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,3 @@ export class Observable<T> implements CoreOperators<T> {
248248

249249
export type ObservableOrPromise<T> = Observable<T> | Promise<T>;
250250
export type ArrayOrIterator<T> = Iterator<T> | ArrayLike<T> | Array<T>;
251-
export type ObservableOrPromiseOrIterator<T> = ObservableOrPromise<T> | Iterator<T>;

src/Rx.global.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
(function(root, factory) {
2-
root.Rx = factory();
3-
} (window || global || this, function() {
4-
return require('../dist/cjs/Rx');
5-
}));
1+
(function(root, factory) {
2+
root.Rx = factory();
3+
} (window || global || this, function() {
4+
return require('../dist/cjs/Rx');
5+
}));

src/operator-typings.ts

Lines changed: 99 additions & 35 deletions
Large diffs are not rendered by default.

src/operators/combineLatest-static.ts

Lines changed: 130 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Observable, ObservableOrPromiseOrIterator} from '../Observable';
1+
import {Observable, ObservableOrPromise, ArrayOrIterator} from '../Observable';
22
import {ArrayObservable} from '../observables/ArrayObservable';
33
import {CombineLatestOperator} from './combineLatest-support';
44
import {Scheduler} from '../Scheduler';
@@ -15,42 +15,151 @@ import {isScheduler} from '../util/isScheduler';
1515
* the most recent values from each observable.
1616
*/
1717
export function combineLatest<T>(
18-
first: ObservableOrPromiseOrIterator<T>,
18+
first: ObservableOrPromise<T>,
1919
scheduler?: Scheduler): Observable<[T]>;
20+
export function combineLatest<T>(
21+
first: ArrayOrIterator<T>,
22+
scheduler?: Scheduler): Observable<[T]>;
23+
export function combineLatest<T, TResult>(
24+
first: ObservableOrPromise<T>,
25+
project: (v1: T) => TResult,
26+
scheduler?: Scheduler): Observable<TResult>;
2027
export function combineLatest<T, TResult>(
21-
first: ObservableOrPromiseOrIterator<T>,
28+
first: ArrayOrIterator<T>,
2229
project: (v1: T) => TResult,
2330
scheduler?: Scheduler): Observable<TResult>;
2431
export function combineLatest<T, T2>(
25-
first: ObservableOrPromiseOrIterator<T>,
26-
second: ObservableOrPromiseOrIterator<T2>,
32+
first: ObservableOrPromise<T>,
33+
second: ObservableOrPromise<T2>,
34+
scheduler?: Scheduler): Observable<[T, T2]>;
35+
export function combineLatest<T, T2>(
36+
first: ArrayOrIterator<T>,
37+
second: ObservableOrPromise<T2> | ArrayOrIterator<T2>,
38+
scheduler?: Scheduler): Observable<[T, T2]>;
39+
export function combineLatest<T, T2>(
40+
first: ObservableOrPromise<T>,
41+
second: ArrayOrIterator<T2>,
42+
scheduler?: Scheduler): Observable<[T, T2]>;
43+
export function combineLatest<T, T2>(
44+
first: ArrayOrIterator<T>,
45+
second: ArrayOrIterator<T2>,
2746
scheduler?: Scheduler): Observable<[T, T2]>;
2847
export function combineLatest<T, T2, TResult>(
29-
first: ObservableOrPromiseOrIterator<T>,
30-
second: ObservableOrPromiseOrIterator<T2>,
48+
first: ObservableOrPromise<T>,
49+
second: ObservableOrPromise<T2>,
3150
project: (v1: T, v2: T2) => TResult,
3251
scheduler?: Scheduler): Observable<TResult>;
52+
export function combineLatest<T, T2, TResult>(
53+
first: ObservableOrPromise<T>,
54+
second: ArrayOrIterator<T2>,
55+
project: (v1: T, v2: T2) => TResult,
56+
scheduler?: Scheduler): Observable<TResult>;
57+
export function combineLatest<T, T2, TResult>(
58+
first: ArrayOrIterator<T>,
59+
second: ObservableOrPromise<T2>,
60+
project: (v1: T, v2: T2) => TResult,
61+
scheduler?: Scheduler): Observable<TResult>;
62+
export function combineLatest<T, T2, TResult>(
63+
first: ArrayOrIterator<T>,
64+
second: ArrayOrIterator<T2>,
65+
project: (v1: T, v2: T2) => TResult,
66+
scheduler?: Scheduler): Observable<TResult>;
67+
export function combineLatest<T, T2, T3>(
68+
first: ObservableOrPromise<T>,
69+
second: ObservableOrPromise<T2>,
70+
third: ObservableOrPromise<T3>,
71+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
3372
export function combineLatest<T, T2, T3>(
34-
first: ObservableOrPromiseOrIterator<T>,
35-
second: ObservableOrPromiseOrIterator<T2>,
36-
third: ObservableOrPromiseOrIterator<T3>,
73+
first: ArrayOrIterator<T>,
74+
second: ObservableOrPromise<T2>,
75+
third: ObservableOrPromise<T3>,
3776
scheduler?: Scheduler): Observable<[T, T2, T3]>;
77+
export function combineLatest<T, T2, T3>(
78+
first: ArrayOrIterator<T>,
79+
second: ArrayOrIterator<T2>,
80+
third: ObservableOrPromise<T3>,
81+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
82+
export function combineLatest<T, T2, T3>(
83+
first: ArrayOrIterator<T>,
84+
second: ArrayOrIterator<T2>,
85+
third: ArrayOrIterator<T3>,
86+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
87+
export function combineLatest<T, T2, T3>(
88+
first: ObservableOrPromise<T>,
89+
second: ArrayOrIterator<T2>,
90+
third: ArrayOrIterator<T3>,
91+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
92+
export function combineLatest<T, T2, T3>(
93+
first: ObservableOrPromise<T>,
94+
second: ObservableOrPromise<T2>,
95+
third: ArrayOrIterator<T3>,
96+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
97+
export function combineLatest<T, T2, T3>(
98+
first: ArrayOrIterator<T>,
99+
second: ObservableOrPromise<T2>,
100+
third: ArrayOrIterator<T3>,
101+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
102+
export function combineLatest<T, T2, T3>(
103+
first: ObservableOrPromise<T>,
104+
second: ArrayOrIterator<T2>,
105+
third: ObservableOrPromise<T3>,
106+
scheduler?: Scheduler): Observable<[T, T2, T3]>;
107+
export function combineLatest<T, T2, T3, TResult>(
108+
first: ObservableOrPromise<T>,
109+
second: ObservableOrPromise<T2>,
110+
third: ObservableOrPromise<T3>,
111+
project: (v1: T, v2: T2, v3: T3) => TResult,
112+
scheduler?: Scheduler): Observable<TResult>;
113+
export function combineLatest<T, T2, T3, TResult>(
114+
first: ArrayOrIterator<T>,
115+
second: ObservableOrPromise<T2>,
116+
third: ObservableOrPromise<T3>,
117+
project: (v1: T, v2: T2, v3: T3) => TResult,
118+
scheduler?: Scheduler): Observable<TResult>;
119+
export function combineLatest<T, T2, T3, TResult>(
120+
first: ArrayOrIterator<T>,
121+
second: ArrayOrIterator<T2>,
122+
third: ObservableOrPromise<T3>,
123+
project: (v1: T, v2: T2, v3: T3) => TResult,
124+
scheduler?: Scheduler): Observable<TResult>;
38125
export function combineLatest<T, T2, T3, TResult>(
39-
first: ObservableOrPromiseOrIterator<T>,
40-
second: ObservableOrPromiseOrIterator<T2>,
41-
third: ObservableOrPromiseOrIterator<T3>,
126+
first: ArrayOrIterator<T>,
127+
second: ArrayOrIterator<T2>,
128+
third: ArrayOrIterator<T3>,
42129
project: (v1: T, v2: T2, v3: T3) => TResult,
43130
scheduler?: Scheduler): Observable<TResult>;
44-
export function combineLatest<T, T2, T3, T4>(
45-
first: ObservableOrPromiseOrIterator<T>,
46-
second: ObservableOrPromiseOrIterator<T2>,
47-
third: ObservableOrPromiseOrIterator<T3>,
48-
fourth: ObservableOrPromiseOrIterator<T4>,
49-
scheduler?: Scheduler): Observable<[T, T2, T3, T4]>;
131+
export function combineLatest<T, T2, T3, TResult>(
132+
first: ObservableOrPromise<T>,
133+
second: ArrayOrIterator<T2>,
134+
third: ArrayOrIterator<T3>,
135+
project: (v1: T, v2: T2, v3: T3) => TResult,
136+
scheduler?: Scheduler): Observable<TResult>;
137+
export function combineLatest<T, T2, T3, TResult>(
138+
first: ObservableOrPromise<T>,
139+
second: ObservableOrPromise<T2>,
140+
third: ArrayOrIterator<T3>,
141+
project: (v1: T, v2: T2, v3: T3) => TResult,
142+
scheduler?: Scheduler): Observable<TResult>;
143+
export function combineLatest<T, T2, T3, TResult>(
144+
first: ArrayOrIterator<T>,
145+
second: ObservableOrPromise<T2>,
146+
third: ArrayOrIterator<T3>,
147+
project: (v1: T, v2: T2, v3: T3) => TResult,
148+
scheduler?: Scheduler): Observable<TResult>;
149+
export function combineLatest<T, T2, T3, TResult>(
150+
first: ObservableOrPromise<T>,
151+
second: ArrayOrIterator<T2>,
152+
third: ObservableOrPromise<T3>,
153+
project: (v1: T, v2: T2, v3: T3) => TResult,
154+
scheduler?: Scheduler): Observable<TResult>;
155+
export function combineLatest<T>(
156+
...observables: Array<ObservableOrPromise<T> | Scheduler>): Observable<T[]>;
50157
export function combineLatest<T>(
51-
...observables: Array<ObservableOrPromiseOrIterator<T> | ((...values: Array<T>) => T) | Scheduler>): Observable<T>;
158+
...observables: Array<ArrayOrIterator<T> | Scheduler>): Observable<T[]>;
159+
export function combineLatest<T, R>(
160+
...observables: Array<ObservableOrPromise<T> | ((...values: Array<T>) => R) | Scheduler>): Observable<R>;
52161
export function combineLatest<T, R>(
53-
...observables: Array<ObservableOrPromiseOrIterator<T> | ((...values: Array<T>) => R) | Scheduler>): Observable<R>;
162+
...observables: Array<ArrayOrIterator<T> | ((...values: Array<T>) => R) | Scheduler>): Observable<R>;
54163
export function combineLatest(
55164
...observables: Array<any>): Observable<any> {
56165
let project, scheduler;

src/operators/combineLatest.ts

Lines changed: 120 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Observable, ObservableOrPromiseOrIterator} from '../Observable';
1+
import {Observable, ObservableOrPromise, ArrayOrIterator} from '../Observable';
22
import {ArrayObservable} from '../observables/ArrayObservable';
33
import {CombineLatestOperator} from './combineLatest-support';
44

@@ -12,40 +12,126 @@ import {CombineLatestOperator} from './combineLatest-support';
1212
* @returns {Observable} an observable of other projected values from the most recent values from each observable, or an array of each of
1313
* the most recent values from each observable.
1414
*/
15+
export function combineLatest<T, TResult>(
16+
project: (v1: T) => TResult
17+
): Observable<TResult>;
18+
export function combineLatest<T, TResult>(
19+
project: (v1: T) => TResult
20+
): Observable<TResult>;
21+
export function combineLatest<T, T2>(
22+
second: ObservableOrPromise<T2>
23+
): Observable<[T, T2]>;
24+
export function combineLatest<T, T2>(
25+
second: ObservableOrPromise<T2> | ArrayOrIterator<T2>
26+
): Observable<[T, T2]>;
1527
export function combineLatest<T, T2>(
16-
second: ObservableOrPromiseOrIterator<T2>): Observable<[T, T2]>;
28+
second: ArrayOrIterator<T2>
29+
): Observable<[T, T2]>;
30+
export function combineLatest<T, T2>(
31+
second: ArrayOrIterator<T2>
32+
): Observable<[T, T2]>;
1733
export function combineLatest<T, T2, TResult>(
18-
second: ObservableOrPromiseOrIterator<T2>,
19-
project: (v1: T, v2: T2) => TResult): Observable<TResult>;
20-
export function combineLatest<T, T2, T3>(
21-
second: ObservableOrPromiseOrIterator<T2>,
22-
third: ObservableOrPromiseOrIterator<T3>): Observable<[T, T2, T3]>;
23-
export function combineLatest<T, T2, T3, TResult>(
24-
second: ObservableOrPromiseOrIterator<T2>,
25-
third: ObservableOrPromiseOrIterator<T3>,
26-
project: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
27-
export function combineLatest<T, T2, T3, T4>(
28-
second: ObservableOrPromiseOrIterator<T2>,
29-
third: ObservableOrPromiseOrIterator<T3>,
30-
fourth: ObservableOrPromiseOrIterator<T4>): Observable<[T, T2, T3, T4]>;
31-
export function combineLatest<T, T2, T3, T4, TResult>(
32-
second: ObservableOrPromiseOrIterator<T2>,
33-
third: ObservableOrPromiseOrIterator<T3>,
34-
fourth: ObservableOrPromiseOrIterator<T4>,
35-
project: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
36-
export function combineLatest<T, A, R>(
37-
...observables: Array<ObservableOrPromiseOrIterator<A> | ((...values: Array<T | A>) => R)>): Observable<R>;
38-
export function combineLatest<T>(): Observable<[T]>;
39-
export function combineLatest<T, TResult>(
40-
project: (v1: T) => TResult): Observable<TResult>;
41-
export function combineLatest<T, A>(
42-
...observables: Array<A>): Observable<(T | A)[]>;
34+
second: ObservableOrPromise<T2>,
35+
project: (v1: T, v2: T2) => TResult
36+
): Observable<TResult>;
37+
export function combineLatest<T, T2, TResult>(
38+
second: ArrayOrIterator<T2>,
39+
project: (v1: T, v2: T2) => TResult
40+
): Observable<TResult>;
41+
export function combineLatest<T, T2, TResult>(
42+
second: ObservableOrPromise<T2>,
43+
project: (v1: T, v2: T2) => TResult
44+
): Observable<TResult>;
45+
export function combineLatest<T, T2, TResult>(
46+
second: ArrayOrIterator<T2>,
47+
project: (v1: T, v2: T2) => TResult
48+
): Observable<TResult>;
49+
export function combineLatest<T, T2, T3>(
50+
second: ObservableOrPromise<T2>,
51+
third: ObservableOrPromise<T3>
52+
): Observable<[T, T2, T3]>;
53+
export function combineLatest<T, T2, T3>(
54+
second: ObservableOrPromise<T2>,
55+
third: ObservableOrPromise<T3>
56+
): Observable<[T, T2, T3]>;
57+
export function combineLatest<T, T2, T3>(
58+
second: ArrayOrIterator<T2>,
59+
third: ObservableOrPromise<T3>
60+
): Observable<[T, T2, T3]>;
61+
export function combineLatest<T, T2, T3>(
62+
second: ArrayOrIterator<T2>,
63+
third: ArrayOrIterator<T3>
64+
): Observable<[T, T2, T3]>;
65+
export function combineLatest<T, T2, T3>(
66+
second: ArrayOrIterator<T2>,
67+
third: ArrayOrIterator<T3>
68+
): Observable<[T, T2, T3]>;
69+
export function combineLatest<T, T2, T3>(
70+
second: ObservableOrPromise<T2>,
71+
third: ArrayOrIterator<T3>
72+
): Observable<[T, T2, T3]>;
73+
export function combineLatest<T, T2, T3>(
74+
second: ObservableOrPromise<T2>,
75+
third: ArrayOrIterator<T3>
76+
): Observable<[T, T2, T3]>;
77+
export function combineLatest<T, T2, T3>(
78+
second: ArrayOrIterator<T2>,
79+
third: ObservableOrPromise<T3>
80+
): Observable<[T, T2, T3]>;
81+
export function combineLatest<T, T2, T3, TResult>(
82+
second: ObservableOrPromise<T2>,
83+
third: ObservableOrPromise<T3>,
84+
project: (v1: T, v2: T2, v3: T3) => TResult
85+
): Observable<TResult>;
86+
export function combineLatest<T, T2, T3, TResult>(
87+
second: ObservableOrPromise<T2>,
88+
third: ObservableOrPromise<T3>,
89+
project: (v1: T, v2: T2, v3: T3) => TResult
90+
): Observable<TResult>;
91+
export function combineLatest<T, T2, T3, TResult>(
92+
second: ArrayOrIterator<T2>,
93+
third: ObservableOrPromise<T3>,
94+
project: (v1: T, v2: T2, v3: T3) => TResult
95+
): Observable<TResult>;
96+
export function combineLatest<T, T2, T3, TResult>(
97+
second: ArrayOrIterator<T2>,
98+
third: ArrayOrIterator<T3>,
99+
project: (v1: T, v2: T2, v3: T3) => TResult
100+
): Observable<TResult>;
101+
export function combineLatest<T, T2, T3, TResult>(
102+
second: ArrayOrIterator<T2>,
103+
third: ArrayOrIterator<T3>,
104+
project: (v1: T, v2: T2, v3: T3) => TResult
105+
): Observable<TResult>;
106+
export function combineLatest<T, T2, T3, TResult>(
107+
second: ObservableOrPromise<T2>,
108+
third: ArrayOrIterator<T3>,
109+
project: (v1: T, v2: T2, v3: T3) => TResult
110+
): Observable<TResult>;
111+
export function combineLatest<T, T2, T3, TResult>(
112+
second: ObservableOrPromise<T2>,
113+
third: ArrayOrIterator<T3>,
114+
project: (v1: T, v2: T2, v3: T3) => TResult
115+
): Observable<TResult>;
116+
export function combineLatest<T, T2, T3, TResult>(
117+
second: ArrayOrIterator<T2>,
118+
third: ObservableOrPromise<T3>,
119+
project: (v1: T, v2: T2, v3: T3) => TResult
120+
): Observable<TResult>;
121+
export function combineLatest<T>(
122+
...observables: Array<ObservableOrPromise<T>>): Observable<T[]>;
123+
export function combineLatest<T>(
124+
...observables: Array<ArrayOrIterator<T>>): Observable<T[]>;
125+
export function combineLatest<T, R>(
126+
...observables: Array<ObservableOrPromise<T> | ((...values: Array<T>) => R)>): Observable<R>;
127+
export function combineLatest<T, R>(
128+
...observables: Array<ArrayOrIterator<T> | ((...values: Array<T>) => R)>): Observable<R>;
43129
export function combineLatest(
44-
...observables: Array<ObservableOrPromiseOrIterator<any> | ((...values: Array<any>) => any)>): Observable<any> {
45-
observables.unshift(this);
46-
let project;
47-
if (typeof observables[observables.length - 1] === 'function') {
48-
project = observables.pop();
49-
}
50-
return new ArrayObservable(observables).lift(new CombineLatestOperator(project));
130+
...observables: Array<ObservableOrPromise<any> | ArrayOrIterator<any> | ((...values: Array<any>) => any)>): Observable<any> {
131+
observables.unshift(this);
132+
let project;
133+
if (typeof observables[observables.length - 1] === 'function') {
134+
project = observables.pop();
135+
}
136+
return new ArrayObservable(observables).lift(new CombineLatestOperator(project));
51137
}

0 commit comments

Comments
 (0)