Skip to content

Commit 029206c

Browse files
style(typings): Updated typings to have a better flow through type inference
1 parent b7ee18c commit 029206c

29 files changed

+514
-541
lines changed

src/Observable.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,6 @@ export class Observable<T> implements CoreOperators<T> {
246246
zipAll: operators.operator_proto_zipAll<T>;
247247
}
248248

249-
export type ObservableOrPromise<T> = Observable<T> | PromiseLike<T>;
250-
export type ArrayOrIterable<T> = IterableShim<T> | ArrayLike<T> | Array<T>;
251-
export type ObservableOrIterable<T> = ObservableOrPromise<T> | ArrayOrIterable<T>;
252-
export type ObservableOrPromiseOrIterable<T> = Observable<T> | PromiseLike<T> | IterableShim<T>;
249+
export type ObservableOrPromise<T> = Observable<T> | Promise<T>;
250+
export type ArrayOrIterator<T> = Iterator<T> | ArrayLike<T> | Array<T>;
251+
export type ObservableOrPromiseOrIterator<T> = ObservableOrPromise<T> | Iterator<T>;

src/observables/FromObservable.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,37 @@ import {IteratorObservable} from'./IteratorObservable';
33
import {ArrayObservable} from './ArrayObservable';
44

55
import {Scheduler} from '../Scheduler';
6+
import {Observable, ObservableOrPromise, ArrayOrIterator} from '../Observable';
67
import {$$observable} from '../util/Symbol_observable';
7-
import {$$iterator} from '../util/Symbol_iterator';
8-
import {Observable} from '../Observable';
98
import {Subscriber} from '../Subscriber';
109
import {ObserveOnSubscriber} from '../operators/observeOn-support';
1110
import {immediate} from '../schedulers/immediate';
11+
import {isPromise} from '../util/isPromise';
12+
import {isObservable} from '../util/isObservable';
13+
import {isIterator} from '../util/isIterator';
1214

1315
const isArray = Array.isArray;
1416

1517
export class FromObservable<T> extends Observable<T> {
16-
constructor(private ish: any, private scheduler: Scheduler) {
18+
constructor(private ish: Observable<T>, private scheduler: Scheduler) {
1719
super(null);
1820
}
1921

22+
static create<T>(ish: ObservableOrPromise<T>, scheduler?: Scheduler): Observable<T>;
23+
static create<T>(ish: ArrayOrIterator<T>, scheduler?: Scheduler): Observable<T>;
2024
static create<T>(ish: any, scheduler: Scheduler = immediate): Observable<T> {
2125
if (ish) {
2226
if (isArray(ish)) {
2327
return new ArrayObservable<T>(ish, scheduler);
24-
} else if (typeof ish.then === 'function') {
28+
} else if (isPromise(ish)) {
2529
return new PromiseObservable<T>(ish, scheduler);
26-
} else if (typeof ish[$$observable] === 'function') {
30+
} else if (isObservable(ish)) {
2731
if (ish instanceof Observable) {
2832
return ish;
2933
}
3034
return new FromObservable<T>(ish, scheduler);
31-
} else if (typeof ish[$$iterator] === 'function') {
32-
return new IteratorObservable<T>(ish, null, null, scheduler);
35+
} else if (isIterator(ish)) {
36+
return new IteratorObservable<T, T>(ish, null, null, scheduler);
3337
}
3438
}
3539

0 commit comments

Comments
 (0)