我正在编译我的TypeScript项目到一个JS文件中,此时通过在编译器选项中指定outFile。在我的项目中,每个类都在不同的文件中定义。TypeScript将订单编译为单个文件
问题是相互依赖的类没有以正确的顺序连接到输出JS中。
例如,如果我具有延伸类B级A,它会意味着类B将具有A级之前被编译
(1)
class A extends B { } //error - can't find B
class B { }
(2)
class B { }
class A extends B { } //works as expected
问题是TypeScript中的文件顺序编译没有根据类依赖关系进行定义,导致很多(1)的实例。
,能与许多行手动定义编译命令来解决:
/// <reference path="myFile.ts"/>
但它是不理想的,并且可以迅速成为大项目头疼。
从我读的另一个选项是使用外部模块,并能够要求/导入相关的类/文件。
这听起来不错,但似乎每个TS文件已经被编译进了自己的js文件后,仅在需要的文件的运行照顾异步加载的。
我需要的是在从ts到js的编译时间期间根据类相关性定义正确的编译顺序。
我用Google搜索“打字稿编译秩序”,并详细阅读前10个结果 - 这意味着下面引用turoials,文档,视频等...
似乎人们已经遇到了同样的问题,但他们的问题有从来没有回答满意。
从我所了解的应该可以做到使用CommonJS外部模块,但我能从答案中理解的是对应该发生什么的一般意义,而不是一个简单而直接的答案,即如何实际做到这一点。
如果你知道答案,让我们来解决这个问题一劳永逸:)
如果你想将它编译成一个单独的js文件,那么我不会使用模块,但在这种情况下,你应该使用引用,而且我也认为在大型项目中引用会帮助他们代表关系在不同的文件之间(如果有很多文件,它不会被弄乱)。这与其他语言没有区别。有了这个说法,你是否尝试过使用[tsconfig.json](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)中的'files'属性来指定要编译的文件? –
指定文件只是意味着以不同的方式手动设置编译顺序,如果我错了,请纠正我。 第二次看使用引用后,它确实类似于其他语言中的操作。 有没有比带有繁琐标签的基于路径的引用更微妙的表达方式?类似于使用基于包的路径导入的东西? 即类似“import Utils.Mathutils;”而不是“///参考路径=”../ Utils/mathUtils.ts“/>” –
您可以使用导入(这是类似于你所要求的),但这是使用模块,你的情况。我同意这些引用不是很舒服,但这可能就是你所有的。 –