Typescript + Vuex + SFC:引用此$ store。时出现TS2339错误。<属性>

时间:2019-09-23 08:30:09

标签: typescript vue.js vuex

我用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

0 个答案:

没有答案