File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -18,4 +18,12 @@ it('should support union type returns', () => {
1818
1919it ( 'should infer correctly with void functions' , ( ) => {
2020 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';
5252 * @name defer
5353 * @owner Observable
5454 */
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 ;
6058 try {
6159 input = observableFactory ( ) ;
6260 } catch ( err ) {
6361 subscriber . error ( err ) ;
6462 return undefined ;
6563 }
66- const source = input ? from ( input ) : empty ( ) ;
64+ const source = input ? from ( input as ObservableInput < ObservedValueOf < R > > ) : empty ( ) ;
6765 return source . subscribe ( subscriber ) ;
6866 } ) ;
6967}
You can’t perform that action at this time.
0 commit comments