@@ -5,10 +5,11 @@ import {Observable} from '../Observable';
55import { OuterSubscriber } from '../OuterSubscriber' ;
66import { InnerSubscriber } from '../InnerSubscriber' ;
77import { subscribeToResult } from '../util/subscribeToResult' ;
8- import { ObservableInput , OperatorFunction , MonoTypeOperatorFunction } from '../types' ;
8+ import { ObservableInput , OperatorFunction , MonoTypeOperatorFunction , ObservedValueOf } from '../types' ;
99
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 */
1213
1314/**
1415 * 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>) =>
7778 * catch `selector` function.
7879 * @name catchError
7980 */
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 > > {
8285 const operator = new CatchOperator ( selector ) ;
8386 const caught = source . lift ( operator ) ;
8487 return ( operator . caught = caught as Observable < T > ) ;
0 commit comments