【问题标题】:How to import a namespace with using 'require'?如何使用“require”导入命名空间?
【发布时间】:2016-06-25 10:26:30
【问题描述】:

在我正在处理的一些代码中,我混合了 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();

我可以保证它们会在全局命名空间中。 我该怎么做?

【问题讨论】:

    标签: javascript module coffeescript typescript gruntjs


    【解决方案1】:

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

    我相信你知道global 很糟糕并且容易受到微妙的排序问题(不仅仅是名称冲突):some notes

    就是这么说的。 只要您拥有根级别 importexport (some docs),文件就会成为模块。

    所以:

    /// <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 应该在全球范围内可用。您需要查看您的foo.d.ts。这会有所帮助:https://basarat.gitbooks.io/typescript/content/docs/types/migrating.html

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2010-09-05
      • 2017-01-25
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多