我已经很好地掌握了TypeScript并经常使用它,所以我知道如何做大部分事情。
假设我附加了global
附加功能,例如getThisOrThat()
是事件。此函数附加到全局,但它也是项目的node_modules中的模块的一部分。它具有完美的工作类型,但由于模块不直接导出函数(记住它们附加到全局)。
所以现在我不能import { getThisOrThat } from 'the-module';
,因为编译后会是:
module.getThisOrThat() /// crash and burn cause it's on global :)
我不能require()
该模块,因为它在转换时当然是一样的。
要传递编译器,我目前知道有两个选项。
declare var getThisOrThat: Function;
global.getThisOrThat()
这两个都可以通过编译器检查,但我真的想让整个项目为这个带有全局函数的模块的输入带来好处。我也试过添加<ref />
,但没有运气。
答案 0 :(得分:2)
所以你有一个在模块中声明某个函数的类型,但是在运行时你想要使用它就好像它是全局的吗?然后,您可以添加augments global namespace:
自己的d.ts文件declare module 'the-module-global' {
import * as TheModule from 'the-module';// this import is used for typechecking only
global {
var getThisOrThat : typeof TheModule.getThisOrThat;
}
}