@@ -29,7 +29,7 @@ export class Store<T> extends Observable<T> implements Observer<Action> {
29
29
key1 : a ,
30
30
key2 : b ,
31
31
key3 : c
32
- ) : Store < T [ a ] [ b ] [ c ] > ;
32
+ ) : Observable < T [ a ] [ b ] [ c ] > ;
33
33
select <
34
34
a extends keyof T ,
35
35
b extends keyof T [ a ] ,
@@ -62,15 +62,12 @@ export class Store<T> extends Observable<T> implements Observer<Action> {
62
62
* This overload is used to support spread operator with
63
63
* fixed length tuples type in typescript 2.7
64
64
*/
65
- select (
66
- pathOrMapFn : ( ( state : T ) => any ) | string ,
67
- ...paths : string [ ]
68
- ) : Observable < any > ;
65
+ select < K = any > ( ...paths : string [ ] ) : Observable < K > ;
69
66
select (
70
67
pathOrMapFn : ( ( state : T ) => any ) | string ,
71
68
...paths : string [ ]
72
69
) : Observable < any > {
73
- return select ( pathOrMapFn , ...paths ) ( this ) ;
70
+ return select . call ( null , pathOrMapFn , ...paths ) ( this ) ;
74
71
}
75
72
76
73
lift < R > ( operator : Operator < T , R > ) : Store < R > {
@@ -111,21 +108,25 @@ export class Store<T> extends Observable<T> implements Observer<Action> {
111
108
export const STORE_PROVIDERS : Provider [ ] = [ Store ] ;
112
109
113
110
export function select < T , K > (
114
- mapFn : ( ( state : T ) => K ) | string
111
+ mapFn : ( state : T ) => K
115
112
) : ( source$ : Observable < T > ) => Observable < K > ;
116
113
export function select < T , a extends keyof T > (
117
114
key : a
118
- ) : ( source$ : Store < a > ) => Observable < T [ a ] > ;
115
+ ) : ( source$ : Observable < T > ) => Observable < T [ a ] > ;
119
116
export function select < T , a extends keyof T , b extends keyof T [ a ] > (
120
117
key1 : a ,
121
118
key2 : b
122
- ) : ( source$ : Store < T > ) => Observable < T [ a ] [ b ] > ;
119
+ ) : ( source$ : Observable < T > ) => Observable < T [ a ] [ b ] > ;
123
120
export function select <
124
121
T ,
125
122
a extends keyof T ,
126
123
b extends keyof T [ a ] ,
127
124
c extends keyof T [ a ] [ b ]
128
- > ( key1 : a , key2 : b , key3 : c ) : ( source$ : Store < a > ) => Observable < T [ a ] [ b ] [ c ] > ;
125
+ > (
126
+ key1 : a ,
127
+ key2 : b ,
128
+ key3 : c
129
+ ) : ( source$ : Observable < T > ) => Observable < T [ a ] [ b ] [ c ] > ;
129
130
export function select <
130
131
T ,
131
132
a extends keyof T ,
@@ -137,7 +138,7 @@ export function select<
137
138
key2 : b ,
138
139
key3 : c ,
139
140
key4 : d
140
- ) : ( source$ : Store < a > ) => Observable < T [ a ] [ b ] [ c ] [ d ] > ;
141
+ ) : ( source$ : Observable < T > ) => Observable < T [ a ] [ b ] [ c ] [ d ] > ;
141
142
export function select <
142
143
T ,
143
144
a extends keyof T ,
@@ -151,7 +152,7 @@ export function select<
151
152
key3 : c ,
152
153
key4 : d ,
153
154
key5 : e
154
- ) : ( source$ : Store < a > ) => Observable < T [ a ] [ b ] [ c ] [ d ] [ e ] > ;
155
+ ) : ( source$ : Observable < T > ) => Observable < T [ a ] [ b ] [ c ] [ d ] [ e ] > ;
155
156
export function select <
156
157
T ,
157
158
a extends keyof T ,
@@ -167,20 +168,19 @@ export function select<
167
168
key4 : d ,
168
169
key5 : e ,
169
170
key6 : f
170
- ) : ( source$ : Store < a > ) => Observable < T [ a ] [ b ] [ c ] [ d ] [ e ] [ f ] > ;
171
+ ) : ( source$ : Observable < T > ) => Observable < T [ a ] [ b ] [ c ] [ d ] [ e ] [ f ] > ;
171
172
/**
172
173
* This overload is used to support spread operator with
173
174
* fixed length tuples type in typescript 2.7
174
175
*/
175
- export function select < T , K > (
176
- pathOrMapFn : ( ( state : T ) => any ) | string ,
176
+ export function select < T , K = any > (
177
177
...paths : string [ ]
178
- ) : ( source$ : Store < T > ) => Observable < K > ;
178
+ ) : ( source$ : Observable < T > ) => Observable < K > ;
179
179
export function select < T , K > (
180
180
pathOrMapFn : ( ( state : T ) => any ) | string ,
181
181
...paths : string [ ]
182
182
) {
183
- return function selectOperator ( source$ : Store < T > ) : Observable < K > {
183
+ return function selectOperator ( source$ : Observable < T > ) : Observable < K > {
184
184
let mapped$ : Observable < any > ;
185
185
186
186
if ( typeof pathOrMapFn === 'string' ) {
0 commit comments