Как мы можем ввести переменную, которая является методом в TypeScript? (Используя Chart. js) - PullRequest
0 голосов
/ 23 апреля 2020

Я получил следующий интерфейс:

export interface LineChartProps {
     ...
    yAxesTicksMin?: number,
    yAxesTicksMax?: number,
    yAxesTicksCallback?: (value: number | string, index: number, values: number[] | string[]) => string | number | null | undefined
}

Затем в объекте Chart JS для "заполнения" моего компонента диаграммы я получил переменную yAxesTicksCallback, назначенную для замены обратного вызова:

...
yAxes: [{
  ticks: {
    min: yAxesTicksMin as number,
    max: yAxesTicksMax as number,
    stepSize: 1,
    callback: yAxesTicksCallback as (value: number | string, index: number, values: number[] | string[]) => string | number | null | undefined,
},
...

Вот здесь и начинается проблема. Когда я определяю «переменная как тип», она выдает следующую ошибку: TypeError: undefined is not a function, если я удаляю эту строку, программа компилируется.

Что я делаю не так? callback имеет тот же тип в исходном интерфейсе (интерфейс Chart Js).

Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

В определении типа вы заявляете, что yAxesTicksCallback необязательно, добавляя идентификатор ?. Следовательно, TypeScript скомпилирует это как () => ... | undefined последний, который вызывает ошибку, когда вы вписываете его в тип функции. Есть множество способов решить эту проблему, и немного сложно посоветовать лучший из них без дальнейшего контекста - но первое, что я бы изучил, это то, можно ли удалить ? из интерфейса, это позволит вам удалите также приведение типов. Я думаю, что это хорошо, потому что обычно, когда я реализую приведение типов, я позже обнаруживаю, что просто лениваюсь и могу лучше структурировать свой код.

...