StoreOptions<RootState>
を使うことで、Vuexの state
, getters
, mutations
, actions
に型が適用されるstate
の中身が型安全になり、補完が効くMutationTypes
/ ActionTypes
を使えば mutation / action 名も型で管理できる「材料リスト(state)」と「作り方(mutations, actions)」を
レシピ帳(型)にちゃんと書いておく。
→ 違う材料を使ったら怒られる(型チェック)。
→ 作り方を間違えたら怒られる(mutation名ミスも防ぐ)。
① RootState
(stateの型)
② MutationTypes
, ActionTypes
, GetterTypes
(名前の一覧)
③ MutationPayloads
(mutationごとのpayload型)
store/types.ts
)// ① stateの型
export interface RootState {
count: number;
userName: string;
}
// ② mutation名
export const MutationTypes = {
Increment: 'increment',
SetUserName: 'setUserName'
} as const;
export type MutationType = typeof MutationTypes[keyof typeof MutationTypes];
// ③ action名
export const ActionTypes = {
UpdateUserName: 'updateUserName'
} as const;
export type ActionType = typeof ActionTypes[keyof typeof ActionTypes];
// ④ mutationのpayload型
export interface MutationPayloads {
[MutationTypes.Increment]: undefined; // incrementは引数なし
[MutationTypes.SetUserName]: string; // setUserNameはstring
}