网站搜索

如何在 TypeScript 中将模块提升为全局?


我有一个包含在模块中的库,我经常使用,所以我想将其提升为“全局”,并在使用时无需引入它。

在纯 JavaScript 中这很简单

window.mylib = require("mylib")

但我发现用 TypeScript 做这件事很困难,因为显然不能混合“模块”和“环境”代码。所以这行不通:

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

因为 Window 接口仅针对一个文件进行了增强。

有没有一种方法可以做到这一点(不包括生成自定义 mylib.d.ts)?

答案#1

你应该做类似这样的事情:

你的模块.ts

import MyLib = require("mylib"); 

export {};

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

window.mylib = MyLib; 

然后在需要时导入它:

import "./yourModule";

它在全球增强中被简短讨论。