File tree 2 files changed +13
-7
lines changed
2 files changed +13
-7
lines changed Original file line number Diff line number Diff line change @@ -18,4 +18,12 @@ it('should support union type returns', () => {
18
18
19
19
it ( 'should infer correctly with void functions' , ( ) => {
20
20
const a = defer ( ( ) => { } ) ; // $ExpectType Observable<never>
21
- } ) ;
21
+ } ) ;
22
+
23
+ it ( 'should error if an ObservableInput is not returned' , ( ) => {
24
+ const a = defer ( ( ) => 42 ) ; // $ExpectError
25
+ } ) ;
26
+
27
+ it ( 'should infer correctly with functions that sometimes do not return an ObservableInput' , ( ) => {
28
+ const a = defer ( ( ) => { if ( Math . random ( ) < 0.5 ) { return of ( 42 ) ; } } ) ; // $ExpectType Observable<number>
29
+ } ) ;
Original file line number Diff line number Diff line change @@ -52,18 +52,16 @@ import { empty } from './empty';
52
52
* @name defer
53
53
* @owner Observable
54
54
*/
55
- export function defer < O extends ObservableInput < any > > ( observableFactory : ( ) => O ) : Observable < ObservedValueOf < O > > ;
56
- export function defer ( observableFactory : ( ) => void ) : Observable < never > ;
57
- export function defer < O extends ObservableInput < any > > ( observableFactory : ( ) => O | void ) : Observable < ObservedValueOf < O > > {
58
- return new Observable < ObservedValueOf < O > > ( subscriber => {
59
- let input : O | void ;
55
+ export function defer < R extends ObservableInput < any > | void > ( observableFactory : ( ) => R ) : Observable < ObservedValueOf < R > > {
56
+ return new Observable < ObservedValueOf < R > > ( subscriber => {
57
+ let input : R | void ;
60
58
try {
61
59
input = observableFactory ( ) ;
62
60
} catch ( err ) {
63
61
subscriber . error ( err ) ;
64
62
return undefined ;
65
63
}
66
- const source = input ? from ( input ) : empty ( ) ;
64
+ const source = input ? from ( input as ObservableInput < ObservedValueOf < R > > ) : empty ( ) ;
67
65
return source . subscribe ( subscriber ) ;
68
66
} ) ;
69
67
}
You can’t perform that action at this time.
0 commit comments