@@ -3,33 +3,37 @@ import {IteratorObservable} from'./IteratorObservable';
3
3
import { ArrayObservable } from './ArrayObservable' ;
4
4
5
5
import { Scheduler } from '../Scheduler' ;
6
+ import { Observable , ObservableOrPromise , ArrayOrIterator } from '../Observable' ;
6
7
import { $$observable } from '../util/Symbol_observable' ;
7
- import { $$iterator } from '../util/Symbol_iterator' ;
8
- import { Observable } from '../Observable' ;
9
8
import { Subscriber } from '../Subscriber' ;
10
9
import { ObserveOnSubscriber } from '../operators/observeOn-support' ;
11
10
import { immediate } from '../schedulers/immediate' ;
11
+ import { isPromise } from '../util/isPromise' ;
12
+ import { isObservable } from '../util/isObservable' ;
13
+ import { isIterator } from '../util/isIterator' ;
12
14
13
15
const isArray = Array . isArray ;
14
16
15
17
export class FromObservable < T > extends Observable < T > {
16
- constructor ( private ish : any , private scheduler : Scheduler ) {
18
+ constructor ( private ish : Observable < T > , private scheduler : Scheduler ) {
17
19
super ( null ) ;
18
20
}
19
21
22
+ static create < T > ( ish : ObservableOrPromise < T > , scheduler ?: Scheduler ) : Observable < T > ;
23
+ static create < T > ( ish : ArrayOrIterator < T > , scheduler ?: Scheduler ) : Observable < T > ;
20
24
static create < T > ( ish : any , scheduler : Scheduler = immediate ) : Observable < T > {
21
25
if ( ish ) {
22
26
if ( isArray ( ish ) ) {
23
27
return new ArrayObservable < T > ( ish , scheduler ) ;
24
- } else if ( typeof ish . then === 'function' ) {
28
+ } else if ( isPromise ( ish ) ) {
25
29
return new PromiseObservable < T > ( ish , scheduler ) ;
26
- } else if ( typeof ish [ $$observable ] === 'function' ) {
30
+ } else if ( isObservable ( ish ) ) {
27
31
if ( ish instanceof Observable ) {
28
32
return ish ;
29
33
}
30
34
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 ) ;
33
37
}
34
38
}
35
39
0 commit comments