如何使用'require'导入命名空间?

时间:2016-03-10 14:11:16

标签: javascript module coffeescript typescript gruntjs

在我正在研究的一些代码中,我混合了Coffeescript,Javascript和Typescript文件。

在我的Typescript文件中,我使用

访问类型定义
/// <reference path="foo.d.ts" />
import {FooA, FooB} from "foo";

var a:FooA = new FooA() // etc...

这导致Javascript

var foo_1 = require("foo");
var a = new foo_1.FooA();

哪个好。但是,我的工作流程是这样的,我不使用模块系统。所有非JS文件都由Grunt处理并编译为JS然后捆绑在一起。

理想情况下,我希望将我的Typescript编译为

var a = new FooA();

因为我可以保证他们会在全局命名空间中。 我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

  

理想情况下,我希望将我的Typescript编译为...因为我可以保证它们将在全局命名空间中。我怎么能这样做?

我相信你知道#很糟糕且容易受到微妙的排序问题的影响(超出名称冲突):some notes

那就是说。只要您拥有根级别globalimportsome docs),文件就会成为模块。

所以:

export

应该是这样的:

/// <reference path="foo.d.ts" />
import {FooA, FooB} from "foo";

var a:FooA = new FooA() // etc...

即。 /// <reference path="foo.d.ts" /> var a:FooA = new FooA() // etc... 应该在全球范围内提供。您需要查看FooA。这将有助于:https://basarat.gitbooks.io/typescript/content/docs/types/migrating.html