Расширение интерфейса charjs с отсутствующими типами - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь установить scaleDefaults для chartjs. Я пользуюсь наборами из @types/chart.js v2.7.22.

Chart.scaleService.updateScaleDefaults('logarithmic', {
    ticks: {
        callback: function (tick: number, index: number, ticks: number[]) {
            // CODE
        }
    }

Но это, однако, вызывает проблему: Property 'scaleService' does not exist on type 'typeof Char'. Если я приведу это к any, оно будет работать нормально.

Но я не хочу приводить это к любому, поэтому я хотел бы расширить интерфейс chartjs, в результате чего:

interface ChartExtended extends Chart { }

(Chart as ChartExtended).scaleService.updateScaleDefaults('logarithmic', {
    ticks: {
        callback: function (tick: number, index: number, ticks: number[]) {
            // CODE
        }
    }

Но снова я сталкиваюсь с ошибками типа:

Type 'typeof Chart' cannot be converted to type 'ChartExtended'.
Property 'config' is misisng in type 'typeof Chart'

Когда я проверяю index.d.ts, я замечаю, что существует отдельный класс def и определение пространства имен с тем же именем:

declare class Chart {
    static readonly Chart: typeof Chart;
    // Stuff
}

declare namespace Chart {
     // Stuff
}

export = Chart;
export as namespace Chart;

Я хочу создать интерфейс, который правильно расширяет диаграмму, чтобы я мог определить scaleService.

Я ожидал бы определить интерфейс как:

interface ChartExtended extends Chart {
    scaleService?: ScaleService
}
...