如何在 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";
它在全球增强中被简短讨论。
