@@ -5,10 +5,11 @@ import {Observable} from '../Observable';
5
5
import { OuterSubscriber } from '../OuterSubscriber' ;
6
6
import { InnerSubscriber } from '../InnerSubscriber' ;
7
7
import { subscribeToResult } from '../util/subscribeToResult' ;
8
- import { ObservableInput , OperatorFunction , MonoTypeOperatorFunction } from '../types' ;
8
+ import { ObservableInput , OperatorFunction , MonoTypeOperatorFunction , ObservedValueOf } from '../types' ;
9
9
10
- export function catchError < T > ( selector : ( err : any , caught : Observable < T > ) => never ) : MonoTypeOperatorFunction < T > ;
11
- export function catchError < T , R > ( selector : ( err : any , caught : Observable < T > ) => ObservableInput < R > ) : OperatorFunction < T , T | R > ;
10
+ /* tslint:disable:max-line-length */
11
+ export function catchError < T , O extends ObservableInput < any > > ( selector : ( err : any , caught : Observable < T > ) => O ) : OperatorFunction < T , T | ObservedValueOf < O > > ;
12
+ /* tslint:enable:max-line-length */
12
13
13
14
/**
14
15
* Catches errors on the observable to be handled by returning a new observable or throwing an error.
@@ -77,8 +78,10 @@ export function catchError<T, R>(selector: (err: any, caught: Observable<T>) =>
77
78
* catch `selector` function.
78
79
* @name catchError
79
80
*/
80
- export function catchError < T , R > ( selector : ( err : any , caught : Observable < T > ) => ObservableInput < R > ) : OperatorFunction < T , T | R > {
81
- return function catchErrorOperatorFunction ( source : Observable < T > ) : Observable < T | R > {
81
+ export function catchError < T , O extends ObservableInput < any > > (
82
+ selector : ( err : any , caught : Observable < T > ) => O
83
+ ) : OperatorFunction < T , T | ObservedValueOf < O > > {
84
+ return function catchErrorOperatorFunction ( source : Observable < T > ) : Observable < T | ObservedValueOf < O > > {
82
85
const operator = new CatchOperator ( selector ) ;
83
86
const caught = source . lift ( operator ) ;
84
87
return ( operator . caught = caught as Observable < T > ) ;
0 commit comments