Typescript 中使用Vuex

anyu
  • 196

vuex使用了module,然后在TS文件中想使用store.state.a报类型错误

// store/index.ts

// ...省略部分代码
Vue.use(Vuex);

const store: StoreOptions<RootState> = {
    modules: {
        a
    }
};

export default new Vuex.Store<RootState>(store);
// a.ts
// ...省略
export const state: State = {
    id: 1
};

const namespaced: boolean = true;

export const user: Module<UserState, RootState> = {
    namespaced,
    state
};
// use.ts
// 纯TS文件,不是Vue组件
store.state.a.id // [ts] 类型“{}”上不存在属性“a”。 [2339]

这里应该怎样修正,才能不抛出这个异常?
谢谢!

回复
阅读 10.4k
3 个回答
✓ 已被采纳

按照原来vue的方式写很容易造成类型丢失,建议用个vuex的ts包来写,我目前项目用的是:vuex-module-decorators,还是很好用的!

定义RootState

//storeModel.ts
export interface RootState {
    a:{
        id: string
    }
}

然后use.ts里面引入

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进