【问题标题】:TypeScript compilation causing dependency errorsTypeScript 编译导致依赖错误
【发布时间】:2015-10-03 10:34:09
【问题描述】:

我正在将多个 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

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

  • 这可以解决吗?
  • TypeScript 团队是否意识到此问题?

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

【问题讨论】:

  • 旁注:阅读来自巴萨拉特的"--out is bad"
  • 请注意,Visual Studio 使用与命令行相同的 typescript 编译器,没有区别。
  • 考虑将一个答案标记为已接受或请求更多信息以回答您的问题 :)

标签: javascript visual-studio visual-studio-2013 compiler-errors typescript


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    阅读更多关于它是如何工作的here

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2020-01-06
      相关资源
      最近更新 更多