Typescript导出模块显式创建新的命名空间?

时间:2014-01-02 13:04:56

标签: javascript namespaces typescript

我刚注意到这种行为,无法完全绕过它。

所以我有两个打字稿文件File1.ts File2.ts

File1.ts:

module myNamespace {
    export class myClass1 {
         someMethod(myClass2) // use this class
    }
}

File2.ts:

module myNamespace {
    export class myClass2 {
    }
}

这是有效的,因为两个类在编译后都会在同一个命名空间中结束。

然而,当我将File2.ts更改为此

export module myNamespace {
    export class myClass2 {

    }
}

当我在module关键字前面添加export关键字时,typescript编译器会抱怨它无法再在File1.ts中找到myClass2

为什么?是因为导出显式设置了新的命名空间,无论它是否已经存在?除了

之外,File2.ts创建的javascript几乎相同
define(["require", "exports"], function(require, exports) { .. }

这是否定义了一个我必须深入研究的新的闭包?

很抱歉,如果这有点令人费解。

1 个答案:

答案 0 :(得分:1)

我认为这只是一个编译器要求。在操场上,我的代码出现了这个错误:

enter image description here

但是,如果我将代码更改为:

,一切正常

enter image description here

或者这个..

enter image description here

在这两种情况下,输出代码都是相同的。