我一直在使用一个名为system的全局变量,它在index.ts中定义。 当我使用内部模块时很好,可能是因为我开始使用--out在index.ts中编译。
现在我正在切换到外部模块,编译器会为全局变量'system'抛出错误。 我在每个文件中保留了一个单独的.d.ts文件用于外部库,我尝试添加
declare var system:System
在该共享参考文件中,但是没有用。
将declare语句添加到使用全局变量的每个文件的工作原理是什么。 所以我的问题是,如果这是我应该这样做的方式(在每个文件中声明),或者是否有我遗漏的东西。
TNX!
答案 0 :(得分:1)
在Visual Studio 2013(更新3)中,在我设置的测试中仅仅存在system.d.ts
就足够了......
system.d.ts(我做了这个)
interface System {
someStuff(): void;
}
declare var system: System;
afile.ts
class Lower {
constructor(private word: string) {
system.someStuff();
}
}
export = Lower
我可以从任何地方访问system.someStuff();
。
如果您使用的是其他IDE,则可能需要添加:
///<reference path="system.d.ts" />
这向编译器提示该定义是否存在,但实际上并未导出system
作为外部模块(如果要像模块一样加载它,可以使用import system = require('system');
,但是在这种情况下,我并不认为这是你想要的,因为你已经说过这是一个全局变量。