【发布时间】:2023-03-28 12:59:01
【问题描述】:
我正在使用direct-vuex 包来定义 Vuejs+Typescript 的存储。尝试定义 Getter 时出现此错误:
'userGetters' 隐式具有类型'any',因为它没有类型注释,并且在其自己的 initializer.ts(7022) 中直接或间接引用
我可以从我的组件访问store.getters.canUpdateUsers,但getter 只执行一次,getters 的类型是 any。这是store.getters 的确切类型:
(property) getters: {
[x: string]: any;
user: {
[x: string]: any;
};
}
这是我模块的 getter 部分:
export const userGetters = defineGetters<UserState>()({
canUpdateUsers(...args) {
// const { state } = userGetterContext(args);
const { state, getters, rootState, rootGetters } = mod1GetterContext(args)
console.log(state);
return (
state.currentUser.role == "admin" ||
state.currentUser.role == "presenter"
);
},
});
const mod1GetterContext = (args: [any, any, any, any]) => moduleGetterContext(args, userModule)
这是模块本身:
export const userModule = defineModule({
state: {
userList: [],
currentUser: {},
} as UserState,
actions: userActions,
mutations: userMutations,
getters: userGetters,
});
我已经禁用了 no-use-before-define eslint 规则。好像和这个错误无关。
更新:
我在这个沙盒中重现了错误:
https://codesandbox.io/s/spring-dew-e5xrq?file=/src/store/modules/user/userGetters.ts
【问题讨论】:
标签: typescript vue.js vuex