【问题标题】:How to generate correct ordering of files with typescript?如何使用打字稿生成正确的文件顺序?
【发布时间】: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.tsb.ts 文件之前输出。

但是,如果没有此行,该项目仍会在没有警告的情况下编译,因此修复此问题很容易出错。更糟糕的是,当在构建脚本中使用或使用gulp-typescript 时,通常该项目最初会在没有行的情况下正常工作(由于最初的顺序是正确的),但随后开始随机失败。所以我正在寻找一种方法来确保文件的顺序正确。我想到的解决方案:

  1. 获取 typescript 以根据对其他文件的隐式引用来确定文件顺序。
  2. 强制引用其他文件,如果它们丢失则会引发错误。

不幸的是,我无法工作。有解决办法吗?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    不幸的是,我无法工作。有没有办法解决这个问题

    不要使用--outhttps://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md。而是使用外部模块:https://www.youtube.com/watch?v=KDrWLMUY0R0

    【讨论】:

    • 感谢您的回答。我已经研究了几个小时,因为我一直在避免使用外部模块(因为我以前从不需要复杂性)。在 CommonJS、AMD、requirejs、browserify 和 webpack 之间做出决定是相当艰巨的。你对走哪条路有什么建议吗? TypeStrong 链接对此没有帮助,而且您使用外部模块的 youtube 视频虽然很有帮助,但也不使用串联。
    • 你能把 tl:dr 贴出来吗?视频中的建议?如果我为阅读的每个 stackoverflow 答案观看一个 10 分钟的视频,我会在完成 Typescript 教程之前死于老年......
    猜你喜欢
    • 2019-01-21
    • 2016-08-22
    • 2023-01-11
    • 1970-01-01
    • 2017-05-10
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多