Skip to content

Commit e7a5a74

Browse files
committed
(fix): action type defination inffer
1 parent 1c4c5ea commit e7a5a74

File tree

3 files changed

+15
-18
lines changed

3 files changed

+15
-18
lines changed

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@
6666
"exports": {
6767
".": {
6868
"import": "./dist/index.mjs",
69-
"require": "./dist/index.js",
70-
"types": "./dist/index.d.ts"
69+
"require": "./dist/index.js"
7170
}
7271
}
7372
}

src/core/create-store.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,17 @@ import { Dependency } from './dependency';
1212

1313
const storeRegistry = new Map<string, StoreInstance<any, any, any>>();
1414

15-
const createStore = <S extends object, G extends object, A extends object>(
15+
const createStore = <
16+
S extends object,
17+
G extends object,
18+
A extends Record<string, (...args: any[]) => any>,
19+
>(
1620
name: string,
1721
options: {
1822
state: StateDefinition<S>;
1923
getters?: GetterDefinition<S, G>;
2024
actions?: ActionDefinition<S, G, A>;
21-
},
25+
} & ThisType<S & { [K in keyof G]: G[K] } & A>,
2226
): StoreInstance<S, G, A> => {
2327
if (storeRegistry.has(name)) {
2428
throw new Error(`Store with name "${name}" already exists.`);

src/type/store-types.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,9 @@ export type GetterDefinition<S, G> = {
44
[key in keyof G]: (state: S) => G[key];
55
};
66

7-
export type ActionDefinition<
8-
S extends object,
9-
G extends object,
10-
A extends object,
11-
> = {
7+
export type ActionDefinition<S extends object, G extends object, A> = {
128
[key in keyof A]: (this: StoreInstance<S, G, A>, ...args: any[]) => any;
13-
};
9+
} & ThisType<S & { [K in keyof G]: G[K] } & A>;
1410

1511
export type StoreSubscriber = () => void;
1612

@@ -21,16 +17,14 @@ export interface Store<S, G, A> {
2117
subscribe: (callback: StoreSubscriber) => () => void;
2218
}
2319

24-
type FlattenedGetters<G> = {
25-
[K in keyof G]: G[K] extends { value: infer V } ? V : never;
26-
};
20+
// type FlattenedGetters<G> = {
21+
// [K in keyof G]: G[K] extends { value: infer V } ? V : never;
22+
// };
2723

2824
export type StoreInstance<
2925
S extends object,
30-
G extends object,
31-
A extends object,
32-
> = S &
33-
FlattenedGetters<G> &
34-
A & {
26+
G extends Record<string, any>,
27+
A,
28+
> = S & { [K in keyof G]: G[K] } & A & {
3529
subscribe: (callback: StoreSubscriber) => () => void;
3630
};

0 commit comments

Comments
 (0)