fix type of selectors w/ subduxes

This commit is contained in:
Yanick Champoux 2023-09-20 10:41:34 -04:00
parent a6b6a54c72
commit e4083645bc
2 changed files with 21 additions and 11 deletions

View File

@ -5,7 +5,7 @@ import Updux, { createAction } from './index.js';
describe('basic selectors', () => {
type State = { x: number };
const foo = new Updux({
const config = {
initialState: {
x: 1,
},
@ -23,8 +23,16 @@ describe('basic selectors', () => {
(y + incr) as number,
},
}),
// cause the type to fail
baz: new Updux({
selectors: {
getFromBaz: () => 'potato',
},
});
}),
},
};
const foo = new Updux(config);
const sample = {
x: 4,

View File

@ -17,9 +17,11 @@ type Values<X> = X[keyof X];
export type DuxSelectors<D> = (D extends { selectors: infer S } ? S : {}) &
(D extends { subduxes: infer SUB }
? Values<{
? UnionToIntersection<
Values<{
[key in keyof SUB]: RebaseSelectors<key, SUB[key]>;
}>
>
: {});
export function buildSelectors(localSelectors = {}, subduxes = {}) {