Last active
May 22, 2017 12:07
-
-
Save heyimalex/c52b5779c01a2803e5f1f040b0088917 to your computer and use it in GitHub Desktop.
reselect-map typescript types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function genSelectorType({ count, isParametric, isArraySelector }) { | |
| const rmap = fn => { | |
| const results = []; | |
| for (let i = 2; i <= count; i++) { | |
| results.push(fn(i)); | |
| } | |
| return results; | |
| }; | |
| const resultGenerics = rmap(i => `R${i}`); | |
| const resultArgs = rmap(i => `res${i}: R${i}`); | |
| const resultSelectors = isParametric | |
| ? rmap(i => `ParametricSelector<S, P, R${i}>`) | |
| : rmap(i => `Selector<S, R${i}>`); | |
| const namedResultSelectors = isParametric | |
| ? rmap(i => `selector${i}: ParametricSelector<S, P, R${i}>`) | |
| : rmap(i => `selector${i}: Selector<S, R${i}>`); | |
| const genericsCombined = isParametric | |
| ? ["S", "P", "E", ...resultGenerics, "T"].join(", ") | |
| : ["S", "E", ...resultGenerics, "T"].join(", "); | |
| const combinerT = isArraySelector | |
| ? `(${["elem: E", ...resultArgs].join(", ")}) => T` | |
| : `(${["elem: E", ...resultArgs, "key: string"].join(", ")}) => T`; | |
| const inputT = isArraySelector ? "E[]" : "{ [key: string]: E }"; | |
| const resultT = isArraySelector ? "T[]" : "{ [key: string]: T }"; | |
| const outputSelector = isParametric | |
| ? `OutputParametricSelector<S, P, ${resultT}, ${combinerT}>` | |
| : `OutputSelector<S, ${resultT}, ${combinerT}>`; | |
| const mappedSelectorT = isParametric | |
| ? `ParametricSelector<S, P, ${inputT}>` | |
| : `Selector<S, ${inputT}>`; | |
| const creatorFuncName = isArraySelector | |
| ? "createArraySelector" | |
| : "createObjectSelector"; | |
| const final = ` | |
| export function ${creatorFuncName}<${genericsCombined}>( | |
| ${[`selector1: ${mappedSelectorT}`, ...namedResultSelectors, `combiner: ${combinerT}`].join(",\n ")}, | |
| ): ${outputSelector}; | |
| export function ${creatorFuncName}<${genericsCombined}>( | |
| selectors: [ | |
| ${[mappedSelectorT, ...resultSelectors].join(",\n ")} | |
| ], | |
| combiner: ${combinerT}, | |
| ): ${outputSelector};`; | |
| console.log(final); | |
| } | |
| function genSelectorTypeN(n) { | |
| console.log(`/* ${n} selector${n == 1 ? '' : 's'} */`) | |
| genSelectorType({ | |
| count: n, | |
| isArraySelector: true, | |
| isParametric: false | |
| }); | |
| genSelectorType({ | |
| count: n, | |
| isArraySelector: true, | |
| isParametric: true | |
| }); | |
| genSelectorType({ | |
| count: n, | |
| isArraySelector: false, | |
| isParametric: false | |
| }); | |
| genSelectorType({ | |
| count: n, | |
| isArraySelector: false, | |
| isParametric: true | |
| }); | |
| } | |
| console.log(` | |
| import { | |
| Selector, | |
| ParametricSelector, | |
| OutputSelector, | |
| OutputParametricSelector, | |
| } from 'reselect'; | |
| `) | |
| for (let i = 1; i <= 12; i++) { | |
| genSelectorTypeN(i); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { | |
| Selector, | |
| ParametricSelector, | |
| OutputSelector, | |
| OutputParametricSelector, | |
| } from 'reselect'; | |
| /* 1 selector */ | |
| export function createArraySelector<S, E, T>( | |
| selector1: Selector<S, E[]>, | |
| combiner: (elem: E) => T, | |
| ): OutputSelector<S, T[], (elem: E) => T>; | |
| export function createArraySelector<S, E, T>( | |
| selectors: [ | |
| Selector<S, E[]> | |
| ], | |
| combiner: (elem: E) => T, | |
| ): OutputSelector<S, T[], (elem: E) => T>; | |
| export function createArraySelector<S, P, E, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| combiner: (elem: E) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E) => T>; | |
| export function createArraySelector<S, P, E, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]> | |
| ], | |
| combiner: (elem: E) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E) => T>; | |
| export function createObjectSelector<S, E, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| combiner: (elem: E, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, key: string) => T>; | |
| export function createObjectSelector<S, E, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }> | |
| ], | |
| combiner: (elem: E, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, key: string) => T>; | |
| export function createObjectSelector<S, P, E, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| combiner: (elem: E, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, key: string) => T>; | |
| export function createObjectSelector<S, P, E, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }> | |
| ], | |
| combiner: (elem: E, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, key: string) => T>; | |
| /* 2 selectors */ | |
| export function createArraySelector<S, E, R2, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| combiner: (elem: E, res2: R2) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2) => T>; | |
| export function createArraySelector<S, E, R2, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2> | |
| ], | |
| combiner: (elem: E, res2: R2) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2) => T>; | |
| export function createArraySelector<S, P, E, R2, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| combiner: (elem: E, res2: R2) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2) => T>; | |
| export function createArraySelector<S, P, E, R2, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2> | |
| ], | |
| combiner: (elem: E, res2: R2) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2) => T>; | |
| export function createObjectSelector<S, E, R2, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| combiner: (elem: E, res2: R2, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2> | |
| ], | |
| combiner: (elem: E, res2: R2, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| combiner: (elem: E, res2: R2, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2> | |
| ], | |
| combiner: (elem: E, res2: R2, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, key: string) => T>; | |
| /* 3 selectors */ | |
| export function createArraySelector<S, E, R2, R3, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| combiner: (elem: E, res2: R2, res3: R3) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3) => T>; | |
| export function createArraySelector<S, E, R2, R3, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| combiner: (elem: E, res2: R2, res3: R3) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3) => T>; | |
| export function createObjectSelector<S, E, R2, R3, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| combiner: (elem: E, res2: R2, res3: R3, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| combiner: (elem: E, res2: R2, res3: R3, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, key: string) => T>; | |
| /* 4 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, key: string) => T>; | |
| /* 5 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, key: string) => T>; | |
| /* 6 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, key: string) => T>; | |
| /* 7 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, key: string) => T>; | |
| /* 8 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, key: string) => T>; | |
| /* 9 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, key: string) => T>; | |
| /* 10 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| selector10: Selector<S, R10>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9>, | |
| Selector<S, R10> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| selector10: ParametricSelector<S, P, R10>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9>, | |
| ParametricSelector<S, P, R10> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| selector10: Selector<S, R10>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9>, | |
| Selector<S, R10> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| selector10: ParametricSelector<S, P, R10>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9>, | |
| ParametricSelector<S, P, R10> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, key: string) => T>; | |
| /* 11 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| selector10: Selector<S, R10>, | |
| selector11: Selector<S, R11>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9>, | |
| Selector<S, R10>, | |
| Selector<S, R11> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| selector10: ParametricSelector<S, P, R10>, | |
| selector11: ParametricSelector<S, P, R11>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9>, | |
| ParametricSelector<S, P, R10>, | |
| ParametricSelector<S, P, R11> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| selector10: Selector<S, R10>, | |
| selector11: Selector<S, R11>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9>, | |
| Selector<S, R10>, | |
| Selector<S, R11> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| selector10: ParametricSelector<S, P, R10>, | |
| selector11: ParametricSelector<S, P, R11>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9>, | |
| ParametricSelector<S, P, R10>, | |
| ParametricSelector<S, P, R11> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, key: string) => T>; | |
| /* 12 selectors */ | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selector1: Selector<S, E[]>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| selector10: Selector<S, R10>, | |
| selector11: Selector<S, R11>, | |
| selector12: Selector<S, R12>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T>; | |
| export function createArraySelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selectors: [ | |
| Selector<S, E[]>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9>, | |
| Selector<S, R10>, | |
| Selector<S, R11>, | |
| Selector<S, R12> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T, | |
| ): OutputSelector<S, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selector1: ParametricSelector<S, P, E[]>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| selector10: ParametricSelector<S, P, R10>, | |
| selector11: ParametricSelector<S, P, R11>, | |
| selector12: ParametricSelector<S, P, R12>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T>; | |
| export function createArraySelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, E[]>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9>, | |
| ParametricSelector<S, P, R10>, | |
| ParametricSelector<S, P, R11>, | |
| ParametricSelector<S, P, R12> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T, | |
| ): OutputParametricSelector<S, P, T[], (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selector1: Selector<S, { [key: string]: E }>, | |
| selector2: Selector<S, R2>, | |
| selector3: Selector<S, R3>, | |
| selector4: Selector<S, R4>, | |
| selector5: Selector<S, R5>, | |
| selector6: Selector<S, R6>, | |
| selector7: Selector<S, R7>, | |
| selector8: Selector<S, R8>, | |
| selector9: Selector<S, R9>, | |
| selector10: Selector<S, R10>, | |
| selector11: Selector<S, R11>, | |
| selector12: Selector<S, R12>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T>; | |
| export function createObjectSelector<S, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selectors: [ | |
| Selector<S, { [key: string]: E }>, | |
| Selector<S, R2>, | |
| Selector<S, R3>, | |
| Selector<S, R4>, | |
| Selector<S, R5>, | |
| Selector<S, R6>, | |
| Selector<S, R7>, | |
| Selector<S, R8>, | |
| Selector<S, R9>, | |
| Selector<S, R10>, | |
| Selector<S, R11>, | |
| Selector<S, R12> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T, | |
| ): OutputSelector<S, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selector1: ParametricSelector<S, P, { [key: string]: E }>, | |
| selector2: ParametricSelector<S, P, R2>, | |
| selector3: ParametricSelector<S, P, R3>, | |
| selector4: ParametricSelector<S, P, R4>, | |
| selector5: ParametricSelector<S, P, R5>, | |
| selector6: ParametricSelector<S, P, R6>, | |
| selector7: ParametricSelector<S, P, R7>, | |
| selector8: ParametricSelector<S, P, R8>, | |
| selector9: ParametricSelector<S, P, R9>, | |
| selector10: ParametricSelector<S, P, R10>, | |
| selector11: ParametricSelector<S, P, R11>, | |
| selector12: ParametricSelector<S, P, R12>, | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T>; | |
| export function createObjectSelector<S, P, E, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T>( | |
| selectors: [ | |
| ParametricSelector<S, P, { [key: string]: E }>, | |
| ParametricSelector<S, P, R2>, | |
| ParametricSelector<S, P, R3>, | |
| ParametricSelector<S, P, R4>, | |
| ParametricSelector<S, P, R5>, | |
| ParametricSelector<S, P, R6>, | |
| ParametricSelector<S, P, R7>, | |
| ParametricSelector<S, P, R8>, | |
| ParametricSelector<S, P, R9>, | |
| ParametricSelector<S, P, R10>, | |
| ParametricSelector<S, P, R11>, | |
| ParametricSelector<S, P, R12> | |
| ], | |
| combiner: (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T, | |
| ): OutputParametricSelector<S, P, { [key: string]: T }, (elem: E, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12, key: string) => T>; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Wow! Well done! That looks about right.