6

使用vue-property-decorator(或者实际上是vue-class-componentComponent的and )和vue-chartjs-typescript,我正在尝试使用属性和. 以下代码在为应用程序提供服务时实际上有效:PropBarChartchartDataoptions

<script lang="ts">
  import { Bar, mixins } from 'vue-chartjs-typescript'
  import Vue from 'vue'
  import { Component, Prop } from 'vue-property-decorator'
  const { reactiveProp } = mixins

  @Component({
    extends: Bar,
    mixins: [reactiveProp],
  })
  export default class BarChart extends Vue {
    @Prop()
    chartData: any

    @Prop({default: function () { return {} }})
    options!: object

    mounted() {
      this.renderChart(this.chartData, this.options)
    }
  }
</script>

但是,在构建应用程序时它会失败。我的 IDE(PyCharm Pro)也给出了同样的错误:

TS2339:“BarChart”类型上不存在属性“renderChart”。

因此,当使用@Component({extends: Bar}), 对于解释器,不清楚该组件是否扩展了Bar. 我已经尝试过扩展Bar而不是Vue, 所以export default class BarChart extends Bar. 但这给出了以下错误:

TypeError:超级表达式必须为空或函数

任何想法如何解决这个问题?

4

1 回答 1

4

您可以在类中显式定义要使用的函数BarChart

  public renderChart!: (chartData: any, options: any) => void
于 2019-09-30T21:44:07.263 回答