【发布时间】:2018-07-07 02:32:02
【问题描述】:
使用mapGetters 时,TypeScript 无法查看绑定到 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()。
【问题讨论】:
-
你可以使用假的
this参数:minimizerIconClass(this: ComponentTypeHere)。 (仅在编译时存在,在编译时被剥离) -
ComponentTypeHere的示例是什么? (抱歉,TypeScript 很新) -
在这个具体的例子中可能只是
{ navCollapsed: boolean }。 (需要更多信息,不确定navCollapsed来自哪里) -
navCollapsed正在被mapGetters()注入。 -
@ffxsam 你找到解决这个问题的方法了吗?
标签: typescript vue.js vuex