MutationやActionは「お店のメニュー」みたいなもの。
いちいち「チャーシューラーメンください!」と手書きで注文すると間違う。
→ 「メニュー番号3番ください!」と番号で統一するほうがミスが減る。
それが
MutationTypes.Incrementみたいな書き方。
store/types.ts// mutationの名前一覧(リテラル型として定義)
export const MutationTypes = {
Increment: 'increment',
SetUserName: 'setUserName'
} as const;
// actionの名前一覧
export const ActionTypes = {
UpdateUserName: 'updateUserName'
} as const;
// getterの名前一覧
export const GetterTypes = {
UserInfo: 'userInfo'
} as const;
🟢 as const を付けると
→ "increment" という 固定の文字列型 になる(string型じゃなくて "increment" 型)。
// それぞれのキー一覧の型を作る
export type MutationType = typeof MutationTypes[keyof typeof MutationTypes];
export type ActionType = typeof ActionTypes[keyof typeof ActionTypes];
export type GetterType = typeof GetterTypes[keyof typeof GetterTypes];
✅ これで MutationType は "increment" | "setUserName" という型になる。