我用Typescript和Vue构建了一个SPA,我想使用Vuex进行商店管理和“传统”单个文件组件(而不是类样式的组件)。 当我引用商店时,在我的组件中:
// file: src/components/MyComponent.ts
import store from "@/store";
import { mapState } from 'vuex';
computed: {
sortedList() {
let sorted: Array<Item> = this.$store.items.slice(0);
if(this.sortBy === 0) {
sorted.sort((a: Item, b: Item) => {
return a.sort1 === b.sort1 ? 0 : (a.sort1 ? -1 : 1)
});
}
return sorted;
},
...mapState(['items'])
},
我得到一个错误: TS2339属性“ items”在类型“ Store”上不存在
我声明了商店的接口:
// file: src/types/index.ts
export interface Item {
id: number,
sort1: string,
timestamp: number
}
export interface RootState {
items: Array<Item>
}
并将我的商店定义为
// file: src/store.ts
import {Item, RootState} from "@/types";
const store: StoreOptions<RootState> = {
//........
//........
//........
export default new Vuex.Store<RootState>(store);
仍然没有帮助... 我想念什么吗?我看到对于类样式化的组件,我将不得不使用@State,我假设没有类就无法使用。
注意:我知道使用mapState
可以使用store.items
而不是this.$store.items