【发布时间】:2021-09-14 05:22:18
【问题描述】:
我想将模块用于应该与 typescript 一起使用的 vuex (^4.0.2) 存储。所以我就这样开始了:
import {createStore, Module} from 'vuex';
type RootState = {
appID: string
}
type SessionState = {
lastSeen: number
}
const session: Module<SessionState, RootState> = {
state: () => ({ lastSeen: -Infinity })
}
const store = createStore<RootState>({
state: () => ({appID: 'r2d2'}),
modules: {
session
}
});
const s2 = store.state.session;
但这会产生这个错误:
类型“RootState”上不存在属性“会话”。
docs 建议将每个模块的状态包含在商店的状态中并使用此:
//@ts-ignore
console.log(store.state.session)
显示该模块已包含。
应如何设置类型以正确反映状态?
【问题讨论】:
-
请分享可重现的示例。我打结你从哪里得到
createStore,Module.. -
你确定
createStore是这样导入的吗? -
是的。像那样(来自运行代码):
import { createStore } from "vuex";那有什么问题?请注意,它是 vuex 版本 4 -
这是我在 ts 操场上得到的
Module '"vuex"' has no exported member 'createStore'. Did you mean to use 'import createStore from "vuex"' instead? -
没有。我正在使用它,如上所述。可以分享一下操场链接吗?
标签: typescript type-inference vuex-modules vuex4