引用嵌套的TypeScript模块

Referencing nested TypeScript modules

本文关键字:模块 TypeScript 嵌套 引用      更新时间:2023-09-26

我有以下情况:

/*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错误。只有当我开始在模块中包装我的类时,这个问题才出现。也就是说,顺序是很好的预模块,让我假设我所有的ref都是好的。

TSC版本为1.5.0-beta

我认为这是一个排序问题。我通过重新检查我的///<reference path=""/>语句并从Y.ts中删除///<reference path="../Z.ts"/>来解决这个问题。

读完这篇文章后似乎不需要它,因为编译器在这个阶段已经加载了Z.ts,包含它只是改变了顺序。