typescript - 使用 Vuex mapGetters 时如何修复 TypeScript 错误?

标签 typescript vue.js vuex

当使用 mapGetters 时,TypeScript 无法看到绑定(bind)到 Vue 组件的 getter 是什么,因此它会抛出错误。示例:

import Vue from 'vue';
import { mapActions, mapGetters } from 'vuex';

export default Vue.extend({
  computed: {
    ...mapGetters('ui', ['navCollapsed']),

    minimizerIconClass(): string {
      return `fa${this.navCollapsed ? '' : 'r'} fa-window-maximize`;
    },
  },

TypeScript 正在大喊 this.navCollapsed:

TS2339: Property 'navCollapsed' does not exist on type 'CombinedVueInstance<Vue, {}, { openMobileMenu(): void; }, { minimizerIconClass: string; }, Readon...'.

我该如何解决这个问题?我能想到的唯一解决方法是不使用 mapGetters()

最佳答案

我建议使用 vuex-class用于带有 Typescript 的装饰器。

但如果您不想要额外的依赖项,我相信使用 this['navCollapsed'] 而不是 this.navCollapsed 应该可以解决编译错误。

关于typescript - 使用 Vuex mapGetters 时如何修复 TypeScript 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48483591/

相关文章:

javascript - 在 axios 超时后得到通知

javascript - Vue.js 和 Firebase 'User' 信息

javascript - 如果属性与另一个数组匹配,则检索数组中的对象

node.js - 如何从 Node 模块导出 Typescript 接口(interface)?

javascript - 从 Vue 中的代理数组访问值

javascript - 将 Vue 项目捆绑到单个 html 文件中,该文件可以嵌入到 Blogger 博客帖子中

vue.js - Vue 组件检查 vuex 存储状态属性是否已填充数据

javascript - vuex-持久状态 : How can I use getters with vuex-persistedstate?

javascript - Angular 合并几张图片

vue.js - 如何在 vue.js 中将文件和数据附加到 FormData