Объявление Typescript объединяет типы библиотек - PullRequest
0 голосов
/ 01 декабря 2018

знает ли кто-нибудь, как "расширить" (посредством объединения объявлений) объявления интерфейсов, которые были объявлены в файле библиотеки из машинописи?

В моем случае я хочу расширить интерфейс HTMLCanvasElement машинописной сборки в библиотеке lib.dom .Я знаю, как работает объявление слияния, но я не получаю правильный импорт для интерфейса HTMLCanvasElement.

import {HTMLCanvasElement} from '<what.to.use.here>';

declare module '<what.to.use.here>'{
    interface HTMLCanvasElement{
        //add my stuff
    }
}

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Объединение объявлений означает, что компилятор объединяет два отдельных объявления, объявленных с одним и тем же именем, в одно определение.

См. Ниже пример, в котором объявления интерфейса объединяются в машинописном тексте

    interface Boy {
    height: number;
    weight: number;
    }

    interface Boy {
    mark: number;
    }

    let boy: Boy = {height: 6 , weight: 50, mark: 50}; 

объявление слияния

0 голосов
/ 01 декабря 2018

Эти типы живут в глобальном пространстве имен.Если вы находитесь в файле скрипта (т.е. не в модуле), вы можете просто переопределить его.Если вы находитесь в модуле, вам нужно объявить его в global, импорт не требуется.

declare global{
    interface HTMLCanvasElement{
        my:number
    }
}

export var x = 1;// just to make this module
let c: HTMLCanvasElement;
c.animate // regular stuff 
c.my //my stuff 
...