forked from vuejs/vuex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.d.ts
66 lines (50 loc) · 1.39 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import './vue'
export class Store<S> {
constructor(options: StoreOption<S>);
state: S;
dispatch(mutationName: string, ...args: any[]): void;
dispatch<P>(mutation: MutationObject<P>): void;
replaceState(state: S): void;
watch<T>(getter: Getter<S, T>, cb: (value: T) => void, options?: WatchOption): void;
hotUpdate(options: {
mutations?: MutationTree<S>;
modules?: ModuleTree;
}): void;
subscribe(cb: (mutation: MutationObject<any>, state: S) => void): () => void;
}
export function install(Vue: vuejs.VueStatic): void;
export interface StoreOption<S> {
state?: S;
mutations?: MutationTree<S>;
modules?: ModuleTree;
plugins?: Plugin<S>[];
strict?: boolean;
}
type Getter<S, T> = (state: S) => T;
type Action<S> = (store: Store<S>, ...args: any[]) => any;
type Mutation<S> = (state: S, ...args: any[]) => void;
type Plugin<S> = (store: Store<S>) => void;
export interface MutationTree<S> {
[key: string]: Mutation<S>;
}
export interface MutationObject<P> {
type: string;
silent?: boolean;
payload?: P;
}
export interface Module<S> {
state?: S;
mutations?: MutationTree<S>;
modules?: ModuleTree;
}
export interface ModuleTree {
[key: string]: Module<any>;
}
export interface VuexComponentOption<S> {
getters: { [key: string]: Getter<S, any> };
actions: { [key: string]: Action<S> };
}
export interface WatchOption {
deep?: boolean;
immidiate?: boolean;
}