@@ -7,7 +7,13 @@ declare namespace Reselect {
7
7
recomputations : ( ) => number ;
8
8
resetRecomputations : ( ) => number ;
9
9
}
10
+
10
11
type ParametricSelector < S , P , R > = ( state : S , props : P , ...args : any [ ] ) => R ;
12
+ interface OutputParametricSelector < S , P , R , C > extends ParametricSelector < S , P , R > {
13
+ resultFunc : C ;
14
+ recomputations : ( ) => number ;
15
+ resetRecomputations : ( ) => number ;
16
+ }
11
17
12
18
/* one selector */
13
19
function createSelector < S , R1 , T > (
@@ -17,7 +23,7 @@ declare namespace Reselect {
17
23
function createSelector < S , P , R1 , T > (
18
24
selector : ParametricSelector < S , P , R1 > ,
19
25
combiner : ( res : R1 ) => T ,
20
- ) : ParametricSelector < S , P , T > ;
26
+ ) : OutputParametricSelector < S , P , T , ( res : R1 ) => T > ;
21
27
22
28
/* two selectors */
23
29
function createSelector < S , R1 , R2 , T > (
@@ -29,7 +35,7 @@ declare namespace Reselect {
29
35
selector1 : ParametricSelector < S , P , R1 > ,
30
36
selector2 : ParametricSelector < S , P , R2 > ,
31
37
combiner : ( res1 : R1 , res2 : R2 ) => T ,
32
- ) : ParametricSelector < S , P , T > ;
38
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 ) => T > ;
33
39
34
40
/* three selectors */
35
41
function createSelector < S , R1 , R2 , R3 , T > (
@@ -43,7 +49,7 @@ declare namespace Reselect {
43
49
selector2 : ParametricSelector < S , P , R2 > ,
44
50
selector3 : ParametricSelector < S , P , R3 > ,
45
51
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 ) => T ,
46
- ) : ParametricSelector < S , P , T > ;
52
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 ) => T > ;
47
53
48
54
/* four selectors */
49
55
function createSelector < S , R1 , R2 , R3 , R4 , T > (
@@ -59,7 +65,7 @@ declare namespace Reselect {
59
65
selector3 : ParametricSelector < S , P , R3 > ,
60
66
selector4 : ParametricSelector < S , P , R4 > ,
61
67
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 ) => T ,
62
- ) : ParametricSelector < S , P , T > ;
68
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 ) => T > ;
63
69
64
70
/* five selectors */
65
71
function createSelector < S , R1 , R2 , R3 , R4 , R5 , T > (
@@ -77,7 +83,7 @@ declare namespace Reselect {
77
83
selector4 : ParametricSelector < S , P , R4 > ,
78
84
selector5 : ParametricSelector < S , P , R5 > ,
79
85
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 ) => T ,
80
- ) : ParametricSelector < S , P , T > ;
86
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 ) => T > ;
81
87
82
88
/* six selectors */
83
89
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , T > (
@@ -97,7 +103,7 @@ declare namespace Reselect {
97
103
selector5 : ParametricSelector < S , P , R5 > ,
98
104
selector6 : ParametricSelector < S , P , R6 > ,
99
105
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ) => T ,
100
- ) : ParametricSelector < S , P , T > ;
106
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ) => T > ;
101
107
102
108
/* seven selectors */
103
109
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , T > (
@@ -122,7 +128,8 @@ declare namespace Reselect {
122
128
selector7 : ParametricSelector < S , P , R7 > ,
123
129
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
124
130
res7 : R7 ) => T ,
125
- ) : ParametricSelector < S , P , T > ;
131
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
132
+ res7 : R7 ) => T > ;
126
133
127
134
/* eight selectors */
128
135
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , T > (
@@ -149,7 +156,8 @@ declare namespace Reselect {
149
156
selector8 : ParametricSelector < S , P , R8 > ,
150
157
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
151
158
res7 : R7 , res8 : R8 ) => T ,
152
- ) : ParametricSelector < S , P , T > ;
159
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
160
+ res7 : R7 , res8 : R8 ) => T > ;
153
161
154
162
/* nine selectors */
155
163
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , T > (
@@ -178,7 +186,8 @@ declare namespace Reselect {
178
186
selector9 : ParametricSelector < S , P , R9 > ,
179
187
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
180
188
res7 : R7 , res8 : R8 , res9 : R9 ) => T ,
181
- ) : ParametricSelector < S , P , T > ;
189
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
190
+ res7 : R7 , res8 : R8 , res9 : R9 ) => T > ;
182
191
183
192
/* ten selectors */
184
193
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , R10 , T > (
@@ -209,7 +218,8 @@ declare namespace Reselect {
209
218
selector10 : ParametricSelector < S , P , R10 > ,
210
219
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
211
220
res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 ) => T ,
212
- ) : ParametricSelector < S , P , T > ;
221
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
222
+ res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 ) => T > ;
213
223
214
224
/* eleven selectors */
215
225
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , R10 , R11 , T > (
@@ -242,7 +252,8 @@ declare namespace Reselect {
242
252
selector11 : ParametricSelector < S , P , R11 > ,
243
253
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
244
254
res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 ) => T ,
245
- ) : ParametricSelector < S , P , T > ;
255
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
256
+ res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 ) => T > ;
246
257
247
258
/* twelve selectors */
248
259
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , R10 , R11 , R12 , T > (
@@ -277,7 +288,8 @@ declare namespace Reselect {
277
288
selector12 : ParametricSelector < S , P , R12 > ,
278
289
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
279
290
res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 , res12 : R12 ) => T ,
280
- ) : ParametricSelector < S , P , T > ;
291
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
292
+ res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 , res12 : R12 ) => T > ;
281
293
282
294
283
295
/* array argument */
@@ -290,7 +302,7 @@ declare namespace Reselect {
290
302
function createSelector < S , P , R1 , T > (
291
303
selectors : [ ParametricSelector < S , P , R1 > ] ,
292
304
combiner : ( res : R1 ) => T ,
293
- ) : ParametricSelector < S , P , T > ;
305
+ ) : OutputParametricSelector < S , P , T , ( res : R1 ) => T > ;
294
306
295
307
/* two selectors */
296
308
function createSelector < S , R1 , R2 , T > (
@@ -302,7 +314,7 @@ declare namespace Reselect {
302
314
selectors : [ ParametricSelector < S , P , R1 > ,
303
315
ParametricSelector < S , P , R2 > ] ,
304
316
combiner : ( res1 : R1 , res2 : R2 ) => T ,
305
- ) : ParametricSelector < S , P , T > ;
317
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 ) => T > ;
306
318
307
319
/* three selectors */
308
320
function createSelector < S , R1 , R2 , R3 , T > (
@@ -316,7 +328,7 @@ declare namespace Reselect {
316
328
ParametricSelector < S , P , R2 > ,
317
329
ParametricSelector < S , P , R3 > ] ,
318
330
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 ) => T ,
319
- ) : ParametricSelector < S , P , T > ;
331
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 ) => T > ;
320
332
321
333
/* four selectors */
322
334
function createSelector < S , R1 , R2 , R3 , R4 , T > (
@@ -332,7 +344,7 @@ declare namespace Reselect {
332
344
ParametricSelector < S , P , R3 > ,
333
345
ParametricSelector < S , P , R4 > ] ,
334
346
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 ) => T ,
335
- ) : ParametricSelector < S , P , T > ;
347
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 ) => T > ;
336
348
337
349
/* five selectors */
338
350
function createSelector < S , R1 , R2 , R3 , R4 , R5 , T > (
@@ -350,7 +362,7 @@ declare namespace Reselect {
350
362
ParametricSelector < S , P , R4 > ,
351
363
ParametricSelector < S , P , R5 > ] ,
352
364
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 ) => T ,
353
- ) : ParametricSelector < S , P , T > ;
365
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 ) => T > ;
354
366
355
367
/* six selectors */
356
368
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , T > (
@@ -370,7 +382,7 @@ declare namespace Reselect {
370
382
ParametricSelector < S , P , R5 > ,
371
383
ParametricSelector < S , P , R6 > ] ,
372
384
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ) => T ,
373
- ) : ParametricSelector < S , P , T > ;
385
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ) => T > ;
374
386
375
387
/* seven selectors */
376
388
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , T > (
@@ -395,7 +407,8 @@ declare namespace Reselect {
395
407
ParametricSelector < S , P , R7 > ] ,
396
408
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
397
409
res7 : R7 ) => T ,
398
- ) : ParametricSelector < S , P , T > ;
410
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
411
+ res7 : R7 ) => T > ;
399
412
400
413
/* eight selectors */
401
414
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , T > (
@@ -422,7 +435,8 @@ declare namespace Reselect {
422
435
ParametricSelector < S , P , R8 > ] ,
423
436
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
424
437
res7 : R7 , res8 : R8 ) => T ,
425
- ) : ParametricSelector < S , P , T > ;
438
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
439
+ res7 : R7 , res8 : R8 ) => T > ;
426
440
427
441
/* nine selectors */
428
442
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , T > (
@@ -451,7 +465,8 @@ declare namespace Reselect {
451
465
ParametricSelector < S , P , R9 > ] ,
452
466
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
453
467
res7 : R7 , res8 : R8 , res9 : R9 ) => T ,
454
- ) : ParametricSelector < S , P , T > ;
468
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
469
+ res7 : R7 , res8 : R8 , res9 : R9 ) => T > ;
455
470
456
471
/* ten selectors */
457
472
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , R10 , T > (
@@ -482,7 +497,8 @@ declare namespace Reselect {
482
497
ParametricSelector < S , P , R10 > ] ,
483
498
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
484
499
res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 ) => T ,
485
- ) : ParametricSelector < S , P , T > ;
500
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
501
+ res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 ) => T > ;
486
502
487
503
/* eleven selectors */
488
504
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , R10 , R11 , T > (
@@ -515,7 +531,8 @@ declare namespace Reselect {
515
531
ParametricSelector < S , P , R11 > ] ,
516
532
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
517
533
res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 ) => T ,
518
- ) : ParametricSelector < S , P , T > ;
534
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
535
+ res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 ) => T > ;
519
536
520
537
/* twelve selectors */
521
538
function createSelector < S , R1 , R2 , R3 , R4 , R5 , R6 , R7 , R8 , R9 , R10 , R11 , R12 , T > (
@@ -550,7 +567,8 @@ declare namespace Reselect {
550
567
ParametricSelector < S , P , R12 > ] ,
551
568
combiner : ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
552
569
res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 , res12 : R12 ) => T ,
553
- ) : ParametricSelector < S , P , T > ;
570
+ ) : OutputParametricSelector < S , P , T , ( res1 : R1 , res2 : R2 , res3 : R3 , res4 : R4 , res5 : R5 , res6 : R6 ,
571
+ res7 : R7 , res8 : R8 , res9 : R9 , res10 : R10 , res11 : R11 , res12 : R12 ) => T > ;
554
572
555
573
556
574
function defaultMemoize < F extends Function > (
0 commit comments