首页 > 解决方案 > vue-class-component 和 Mixins

问题描述

我将 vue-class-component 与 TypeScript 一起用于我的 Vue 项目。我有它的组件和 Mixin:

// MyComp.vue
import Component, { mixins } from 'vue-class-component'
import MyMixin from './mixin.ts'

@Component
export class MyComp extends mixins(MyMixin) {
  compValue: string = 'Hello';
}


// mixin.ts
import Vue from 'vue'
import Component from 'vue-class-component'

@Component
export default class MyMixin extends Vue {
  created() {
    console.log(this.compValue); // TS2339: Property 'compValue' does not exist on type 'MyMixin'.
  }
}

它可以工作,但 TypeScript 抱怨缺少属性“compValue”。如何解决这个问题?

标签: typescriptvue.jsvue-class-components

解决方案


发生错误是因为compValue不存在于MyMixin. 如果这是一个永远不会自行实例化的抽象类,并且可以保证该属性存在,则可以声明它:

export default class MyMixin extends Vue {
  compValue: string;
  created() {
    console.log(this.compValue);
  }
}

推荐阅读