关于vuex getter的问题

来源:14-1 课程总结

慕粉3178367

2023-09-23

老师你好,我先给vuex中的getter设置一个类型,这样补全方便一些。但是为什么好像设置不了?

// getters.ts 这里是没问题的
interface GettersProps {
  token: (state: GlobalDataProps) => string
  hasUserInfo: (state: GlobalDataProps) => boolean
}

const getters: GettersProps = {
  token: (state: GlobalDataProps): string => state.user.token,
  hasUserInfo: (state: GlobalDataProps): boolean =>
    JSON.stringify(state.user.userInfo) !== '{}',
}
// index.ts
export interface GlobalDataProps {
  user: UserState
  app: AppState
}

export default createStore<GlobalDataProps>({
  getters, // 这里的getters 报错了报错内容如下
  modules: {
    user,
    app
  }
})
// 报错
不能将类型“GettersProps”分配给类型“GetterTree<GlobalDataProps, GlobalDataProps>”。
  类型“GettersProps”中缺少类型“string”的索引签名。ts(2322)
index.d.ts(109, 3): 所需类型来自属性 "getters",在此处的 "StoreOptions<GlobalDataProps>" 类型上声明该属性

写回答

1回答

张轩

2023-09-24

同学你好

这是因为你的 getters 和要求的类型有冲突造成的,假如使用 vuex,不建议给 getter 添加类型,费时费力。想要完美的类型,直接换 pinia 是更好的方式,就像我们课中最新更新的 pinia 内容一样,更方便。

0
1
慕粉3178367
明白了 谢谢老师!
2023-09-24
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程