TypeScript 编译导致依赖错误

TypeScript compilation causing dependency errors

我正在将多个 TypeScript 文件编译成一个 JavaScript 文件。比如说他们被称为:

A.ts // depends on C.ts
B.ts // depends on C.ts
C.ts

当我检查 JavaScript 输出时,我发现了一个问题:TypeScript 的 __extends 函数因传递 undefined 值而失败。

编译应按以下顺序进行:

C.ts // because A and B depend on this respectively.
A.ts
B.ts

但不幸的是,它们是根据它们的名称(按字母顺序)而不是依赖顺序编译的。

注意:这是一个 Visual Studio TypeScript 编译器问题。大概使用命令行编译器可以解决这个问题,但我想从 Visual Studio.

编译

but unfortunately they were compiled according to their names (alphabetically) rather than in dependency order

https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md

TypeScript 不进行自动文件排序。您应该使用一些 --module 标志集进行编译,例如commonjs 然后让外部模块加载器为您解析这些依赖链。

更多:http://basarat.gitbooks.io/typescript/content/docs/project/modules.html

为了让编译器以正确的顺序合并文件,您必须在依赖于其他文件的每个文件中使用 reference tags。只要您没有任何循环依赖关系,这将使编译器可以对您的资源进行依赖关系图并对其进行正确排序。

您的另一个选择是手动对编译器的输入进行排序,方法是为其提供所有文件的完整排序列表,或者使用 _references.ts 至少定义要加载的第一组文件订单。

详细了解其工作原理 here