Реактивный компонент Vue Chart.js с использованием Typescript - PullRequest
0 голосов
/ 30 сентября 2019

Использование vue-property-decorator (или фактически его Component и Prop из vue-class-component ) и vue-chartjs-typescript , Я пытаюсь создать BarChart -компонент со свойствами chartData и options. При работе с приложением на самом деле работает следующий код:

<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: свойство 'renderChart' не существует для типа 'BarChart'.

Поэтому при использовании @Component({extends: Bar}), для интерпретатора неясно, что этот компонент распространяется Bar. Я уже пытался расширить Bar вместо Vue, поэтому export default class BarChart extends Bar. Но это приводит к следующей ошибке:

TypeError: Супер-выражение должно быть либо нулевым, либо функцией

Есть идеи, как решить эту проблему?

1 Ответ

1 голос
/ 01 октября 2019

Вы можете явно определить функцию, которую хотите использовать внутри класса BarChart

  public renderChart!: (chartData: any, options: any) => void
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...