@@ -5,16 +5,16 @@ import { Subscription } from '../Subscription';
5
5
import { OuterSubscriber } from '../OuterSubscriber' ;
6
6
import { InnerSubscriber } from '../InnerSubscriber' ;
7
7
import { subscribeToResult } from '../util/subscribeToResult' ;
8
- import { ObservableInput , OperatorFunction } from '../types' ;
8
+ import { ObservableInput , OperatorFunction , ObservedValueOf } from '../types' ;
9
9
import { map } from './map' ;
10
10
import { from } from '../observable/from' ;
11
11
12
12
/* 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 > > ;
14
14
/** @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 > > ;
16
16
/** @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 > ;
18
18
/* tslint:enable:max-line-length */
19
19
20
20
/**
@@ -59,10 +59,10 @@ export function switchMap<T, I, R>(project: (value: T, index: number) => Observa
59
59
* @method switchMap
60
60
* @owner Observable
61
61
*/
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 > {
66
66
if ( typeof resultSelector === 'function' ) {
67
67
return ( source : Observable < T > ) => source . pipe (
68
68
switchMap ( ( a , i ) => from ( project ( a , i ) ) . pipe (
0 commit comments