我是否需要在每个外部打字稿模块中声明一个全局变量?

时间:2014-11-01 14:40:52

标签: module typescript

我一直在使用一个名为system的全局变量,它在index.ts中定义。 当我使用内部模块时很好,可能是因为我开始使用--out在index.ts中编译。

现在我正在切换到外部模块,编译器会为全局变量'system'抛出错误。 我在每个文件中保留了一个单独的.d.ts文件用于外部库,我尝试添加

declare var system:System

在该共享参考文件中,但是没有用。

将declare语句添加到使用全局变量的每个文件的工作原理是什么。 所以我的问题是,如果这是我应该这样做的方式(在每个文件中声明),或者是否有我遗漏的东西。

TNX!

1 个答案:

答案 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');,但是在这种情况下,我并不认为这是你想要的,因为你已经说过这是一个全局变量。

相关问题