首页 > 解决方案 > 打字稿声明合并库类型

问题描述

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

就我而言,我想扩展库lib.dom中构建的打字稿的接口HTMLCanvasElement。我知道声明合并是如何工作的,但我没有为接口 HTMLCanvasElement 获得正确的导入。

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

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

谢谢 :)

标签: typescripttype-declaration

解决方案


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

推荐阅读