TypeScript如何在模块中优雅地使用全局变量
问题背景
用TypeScript编写js模块module时,经常遇到一种场景:需要使用在外部声明的全局变量。
这个全局变量可能是:
- 其他模块
- 全局变量
- 全局函数
如果这个全局变量是在同一个工程里其他文件中声明的,我们可以直接通过import引入,但是这就增加了强依赖关系。
有时候我们不想增加这个依赖关系,或者,甚至无法提前得知这个全局变量是在哪里由谁声明的,是要怎么做呢?
解决方法
使用declare关键字
declare var <全局变量>:<类型>;
或者
declare const <全局变量>:<类型>;
如果不知道类型,可以使用any,或者省略。
这样就减少了依赖,降低了耦合度。
注意
这种情况下,在调用的时候,需要保证要使用的全局变量已经被声明并赋值,否则会报undefined。