Почему this.renderChart не существует в CombinedVueInstance?

Компонент Vue, который я создал с помощью TypeScript и vue-chartjs, постоянно вызывает у меня проблему this.renderChart несуществования. Кажется, я не могу найти способ определить это.

Свойство «renderChart» не существует для типа «CombinedVueInstance<Vue, unknown, unknown, unknown, Readonly<Record<"chartData" | "options", any>>>».

Всякий раз, когда я использую console.log() для определения this, он показывает мне существующую функцию вместе с этими исключениями и выдает их.

renderChart: ƒ ()
arguments: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.invokeGetter (<anonymous>:1:142)]
caller: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.invokeGetter (<anonymous>:1:142)]
length: 2
name: "bound renderChart"
__proto__: ƒ ()
[[TargetFunction]]: ƒ renderChart(data, options)
[[BoundThis]]: VueComponent
[[BoundArgs]]: Array(0)
styles: (...)
width: (...)

Это компонент

LineChart.vue

<script lang="ts">
import Vue from "vue";
import { Line, mixins } from "vue-chartjs";
export default Vue.extend({
  name: "LineChart",
  extends: Line,
  mixins: [mixins.reactiveProp],
  props: ["chartData", "options"],
  mounted() {
    this.renderChart(this.chartData, this.options);
  }
});
</script>

Должен ли я попытаться найти способ обойти это, или есть путаница в том, как я вызвал функцию? Я просмотрел документы vue-chartjs, и функция называется той же Кстати, я предполагаю, что они не используют TypeScript.


person Erik Sanchez    schedule 09.06.2020    source источник
comment
Это ошибка времени компиляции от Typescript. Вам нужно сообщить компилятору, что ваш LineChart компонент реализует { renderChart(chartData: any, options: any) }   -  person Phil    schedule 09.06.2020
comment
Куда мне обратиться, чтобы сообщить компилятору?   -  person Erik Sanchez    schedule 09.06.2020
comment
Быстрое решение - определить интерфейс и использовать (this.$refs.whatever as LineChartInterface).renderChart(...)   -  person Phil    schedule 09.06.2020
comment
В посте, который вы разместили, который заменяет этот, они используют vue-class-component.   -  person Erik Sanchez    schedule 09.06.2020
comment
Есть более одного ответа   -  person Phil    schedule 09.06.2020
comment
Хорошо, ценю помощь.   -  person Erik Sanchez    schedule 09.06.2020