字段配置类型名修改
笑笑 编写于 2023-04-26 22:42:15
NewLife.CubeVue
import { createStore as create, Store, StoreOptions } from 'vuex';
import getters from './getters';
import moduleApp from './modules/app';
import entity from './modules/entity';
import route from './modules/route';
import user from './modules/user';

interface S {
  app: typeof moduleApp.state;
  entity: typeof entity.state;
  route: typeof route.state;
  user: typeof user.state;
}

export const storeOptions: StoreOptions<S> = {
  state: {} as S,
  mutations: {},
  actions: {},
  modules: {
    app: moduleApp,
    entity,
    route,
    user,
  },
  getters,
};

export const createStore = (
  app: any,
  configure: ((options: StoreOptions<S>) => void) | undefined = undefined,
): Store<S> => {
  if (configure) {
    configure(storeOptions);
  }
  const store = create(storeOptions);
  app.use(store);

  return store;
};