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.