我最近升级到0.9.5,而不是使用构建事件来编译我的打字稿应用程序,我决定使用项目设置页面中的内置选项。特别是“将javascript编译成一个文件”的复选框
简而言之,我无法以正确的顺序编译文件。编译很好但是当我运行它时,我可以看到文件顺序不正确所以子类抛出错误,因为它们的基类没有定义。
以前(在构建事件方法中)我会指定我正在编译的文件('Main.ts')。在目标Main.ts文件中,我使用了许多引用标记到其他文件,并且可以按正确的顺序将所有内容编译成单个文件。
现在在0.9.5我不知道我应该怎么做。没有选项指定哪个文件是我要编译的文件。在他们的博客文章中,他们提到使用_references.ts文件。我找不到任何关于此的文件 - 所以我认为这是正确的:
我创建了一个名为_references.ts的文件,据说首先将其传递给编译器。在该文件中,我列出了所有的引用命令,如下所示:
/// <reference path="core/a.ts" />
/// <reference path="core/b.ts" />
/// <reference path="core/c.ts" />
但是如果我这样做,编译会随机化构建顺序。它完全忽略了_references.ts文件或该文件的引用标记。 (我已经尝试将它们放入另一个文件中但是如何告诉它必须首先传递该文件?)
我可能错了,但我怀疑它编译了所有文件,而且恰好是_references文件最后出现了。
所以简而言之......如何告诉编译器(在新的0.9.5设置面板中)将所有内容编译成1个文件并保留顺序。
在线感谢
答案 0 :(得分:3)
_references.ts
可用于控制合并输出的顺序。
确保您在至少一个_references.ts
文件中的某处使用.ts
,否则编译器不知道存在。
为此,请在一个或多个.ts文件中添加_references.ts
的引用;)
现在可以根据需要在该文件中订购.ts
个引用。
我用操场上的Raytracer示例测试了它。
我将所有组件拆分为单独的文件并添加引用...,我的_references.ts
看起来像这样:
/// <reference path="IThing.ts" />
/// <reference path="ISurface.ts" />
/// <reference path="IScene.ts" />
/// <reference path="IRay.ts" />
/// <reference path="IIntersection.ts" />
/// <reference path="ILight.ts" />
/// <reference path="Vector.ts" />
/// <reference path="Color.ts" />
/// <reference path="Camera.ts" />
/// <reference path="Sphere.ts" />
/// <reference path="Plane.ts" />
/// <reference path="Surfacse.ts" />
/// <reference path="RayTracer.ts" />
/// <reference path="Init.ts" />
我还使用该选项生成一个输出文件,并以完美的顺序生成它......
答案 1 :(得分:2)
我发现VS在完整版本中编译_references.ts
文件的方式有一个非常糟糕的错误(意思是Ctrl+F5
反对Ctrl+S
}。
如果您在_references.ts
将文件置于corrcet顺序时遇到问题,请在此处查看我的问题和答案:
Visual Studio 2013 Typescript compiler isn't respecting '_references.ts' file
简单的解决方法是编辑.csproj
文件(首先卸载项目),然后将_references.ts
文件移到包含的ts文件列表中的第一个文件。