@@ -5,16 +5,16 @@ import { Subscription } from '../Subscription';
55import { OuterSubscriber } from '../OuterSubscriber' ;
66import { InnerSubscriber } from '../InnerSubscriber' ;
77import { subscribeToResult } from '../util/subscribeToResult' ;
8- import { ObservableInput , OperatorFunction } from '../types' ;
8+ import { ObservableInput , OperatorFunction , ObservedValueOf } from '../types' ;
99import { map } from './map' ;
1010import { from } from '../observable/from' ;
1111
1212/* tslint:disable:max-line-length */
13- export function switchMap < T , R > ( project : ( value : T , index : number ) => ObservableInput < R > ) : OperatorFunction < T , R > ;
13+ export function switchMap < T , O extends ObservableInput < any > > ( project : ( value : T , index : number ) => O ) : OperatorFunction < T , ObservedValueOf < O > > ;
1414/** @deprecated resultSelector is no longer supported, use inner map instead */
15- export function switchMap < T , R > ( project : ( value : T , index : number ) => ObservableInput < R > , resultSelector : undefined ) : OperatorFunction < T , R > ;
15+ export function switchMap < T , O extends ObservableInput < any > > ( project : ( value : T , index : number ) => O , resultSelector : undefined ) : OperatorFunction < T , ObservedValueOf < O > > ;
1616/** @deprecated resultSelector is no longer supported, use inner map instead */
17- export function switchMap < T , I , R > ( project : ( value : T , index : number ) => ObservableInput < I > , resultSelector : ( outerValue : T , innerValue : I , outerIndex : number , innerIndex : number ) => R ) : OperatorFunction < T , R > ;
17+ export function switchMap < T , R , O extends ObservableInput < any > > ( project : ( value : T , index : number ) => O , resultSelector : ( outerValue : T , innerValue : ObservedValueOf < O > , outerIndex : number , innerIndex : number ) => R ) : OperatorFunction < T , R > ;
1818/* tslint:enable:max-line-length */
1919
2020/**
@@ -59,10 +59,10 @@ export function switchMap<T, I, R>(project: (value: T, index: number) => Observa
5959 * @method switchMap
6060 * @owner Observable
6161 */
62- export function switchMap < T , I , R > (
63- project : ( value : T , index : number ) => ObservableInput < I > ,
64- resultSelector ?: ( outerValue : T , innerValue : I , outerIndex : number , innerIndex : number ) => R ,
65- ) : OperatorFunction < T , I | R > {
62+ export function switchMap < T , R , O extends ObservableInput < any > > (
63+ project : ( value : T , index : number ) => O ,
64+ resultSelector ?: ( outerValue : T , innerValue : ObservedValueOf < O > , outerIndex : number , innerIndex : number ) => R ,
65+ ) : OperatorFunction < T , ObservedValueOf < O > | R > {
6666if ( typeof resultSelector === 'function' ) {
6767return ( source : Observable < T > ) => source . pipe (
6868switchMap ( ( a , i ) => from ( project ( a , i ) ) . pipe (
0 commit comments