Typescript声明合并库类型

时间:2018-12-01 08:08:13

标签: typescript type-declaration

有人知道如何“扩展”(通过声明合并)接口的声明,即从打字稿在库文件中声明的接口声明吗?

对于我来说,我想扩展库 lib.dom 中的打字稿构建的接口 HTMLCanvasElement 。我知道声明合并的工作方式,但是我没有为HTMLCanvasElement接口获得正确的导入。

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

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

谢谢:)

2 个答案:

答案 0 :(得分:2)

这些类型位于全局名称空间中。如果您位于脚本文件(即不是模块)中,则可以重新声明它。如果您在模块中,则需要在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 

答案 1 :(得分:-1)

声明合并意味着编译器将使用相同名称声明的两个单独的声明合并到一个定义中。

请参见下面的示例,其中接口声明以打字稿合并

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

    interface Boy {
    mark: number;
    }

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

declaration merging