如何在打字稿中将模块提升为全局?

时间:2016-08-28 08:36:55

标签: typescript

我有一个我经常使用的模块中包含的库,因此我想将其推广为“全局”并使用而不需要它。

在纯JavaScript中,它很容易

window.mylib = require("mylib")

但我发现在TypeScript中很难做到,因为显然你不能混合“模块”和“环境”代码。所以这不起作用:

import MyLib = require("mylib"); 
window.mylib = MyLib;  
interface Window {
    mylib: mylib;
}

因为Window界面仅针对一个文件进行了扩充。

有没有办法(不包括生成自定义mylib.d.ts)?

1 个答案:

答案 0 :(得分:4)

您应该执行以下操作:

yourModule.ts

import MyLib = require("mylib"); 

export {};

declare global {
    interface Window {
        mylib: mylib;
    }
}

window.mylib = MyLib; 

然后你只需在需要时导入它:

import "./yourModule";

Global augmentation中讨论了它的简短。