[K in keyof T]: U
) を活用するパターン「3番ピザ」には「枚数」が必要。
「4番パスタ」には「ソースの種類」が必要。
→ 注文内容(payload)はメニュー(type)ごとに違う。
→ セットリストで間違いを防ぐ。
types.ts
)// mutation名(string literal型)
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)
}