【发布时间】:2016-10-14 15:36:36
【问题描述】:
考虑两个打字稿文件:
文件a.ts:
module SomeModule {
export class AClass {
}
}
文件b.ts:
module SomeModule {
export var aValue = new AClass();
}
如果您使用tsc -out out.js b.ts a.ts 编译它们,则编译不会出错并且out.js 包含以下内容:
var SomeModule;
(function (SomeModule) {
SomeModule.aValue = new SomeModule.AClass();
})(SomeModule || (SomeModule = {}));
var SomeModule;
(function (SomeModule) {
var AClass = (function () {
function AClass() {
}
return AClass;
})();
SomeModule.AClass = AClass;
})(SomeModule || (SomeModule = {}));
这是一个问题,因为SomeModule.AClass 在定义之前就被使用了。现在可以通过将///<reference path="a.ts" /> 添加到b.ts 文件的顶部来解决问题。这将确保a.ts 在b.ts 文件之前输出。
但是,如果没有此行,该项目仍会在没有警告的情况下编译,因此修复此问题很容易出错。更糟糕的是,当在构建脚本中使用或使用gulp-typescript 时,通常该项目最初会在没有行的情况下正常工作(由于最初的顺序是正确的),但随后开始随机失败。所以我正在寻找一种方法来确保文件的顺序正确。我想到的解决方案:
- 获取 typescript 以根据对其他文件的隐式引用来确定文件顺序。
- 强制引用其他文件,如果它们丢失则会引发错误。
不幸的是,我无法工作。有解决办法吗?
【问题讨论】:
标签: typescript