引用嵌套的 TypeScript 模块

Referencing nested TypeScript modules

我有以下情况:

/*file A/Z.ts*/
///<reference path="B/Y.ts"/>
module A{
    import Y = B.Y;
    export class Z{
        //use class Y
    }
}


/*file A/B/Y.ts*/
///<reference path="../Z.ts"/>
module A.B{
    import Z = A.Z;
    export class Y{
        //use class Z
    }
}

这似乎编译得很好,但我遇到了 javascript 个问题。 在 chrome 开发控制台中调用 var y = new Y() 时,我得到:Uncaught TypeError: undefined is not a function 并查看生成的 JavaScript IntelliJ 代码检查指出 B 是私有的且不可访问.

值得注意的是,我所有的 .ts 都被编译成一个文件。

编辑:经进一步检查,这是一个订购问题。在生成的 javascript 中四处移动声明修复了 JavaScript 错误。 只有当我开始将 类 包装在模块中时,问题才会出现。即订购很好预模块让我假设我所有的参考都很好。

TSC 版本为 1.5.0-beta

因为我认为这是一个订购问题。我通过重新检查我的 ///<reference path=""/> 语句并从 Y.ts.

中删除 ///<reference path="../Z.ts"/> 来解决问题

看完后this 似乎不需要它,因为编译器在此阶段已经加载 Z.ts 并且包含它只是改变了顺序。