import { ActionContext, ActionTree } from "vuex"; import { Mutations, MutationTypes } from "./mutations"; import { State } from "./index"; import { RootState } from "@/store"; //(C) - Ações // [C.1] inserir a definição da ação x no enum // ==> { setX = "NOMEMODULO__SET_ X" } export enum ActionTypes { setValue = "GENERIC__SET_VALUE", } // !!! AUGUMENTED ACTION CONTEXT !!! type AugmentedActionContext = { commit( key: K, payload: Parameters[1] ): ReturnType; } & Omit, "commit">; // [C.2] definir o tipo da ação setX // ==> [ActionTypes.setX]( // ==> { commit }: AugmentedActionContext, // ==> payload: TIPO_DE_X // ==> ): void; export interface Actions { [ActionTypes.setValue]( { commit }: AugmentedActionContext, payload: any ): void; } // [C.3] declara a ação setX // [ActionTypes.setX]({ commit }, payload) { // commit(MutationTypes.X, payload); // }, export const actions: ActionTree & Actions = { [ActionTypes.setValue]({ commit }, payload) { commit(MutationTypes.VALUE, payload); }, };