TypeScript删除扩展重复项

时间:2013-11-21 17:46:55

标签: typescript

我将我的TypeScript应用程序分成多个文件,通常每个类一个。当我发布我的应用程序时,我将它们连接并缩小为一个文件。我遇到的问题是TypeScript generatred __extends函数被放入每个编译的JavaScript文件中。所以我最终会在最终产品中使用相同代码的多个副本。

有没有办法告诉编译器只将__extends函数放在一个JavaScript文件中?还有其他解决方案吗?

2 个答案:

答案 0 :(得分:5)

一种解决方案是通过TypeScript编译器将输出合并到一个文件中:

tsc --out final.js app.ts

然后你可以缩小final.js,它应该只有一个扩展函数。

答案 1 :(得分:1)

将输出合并到文件中的选项很棒,但并非所有版本和所有模块版本都支持它。
为了克服它,您可以使用noEmitHelpers编译器选项删除辅助函数并将其自己编写在单独的文件中。

您应该创建一个包含extend函数的新emitHelperFile.js。

var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};

从生成的编译器输出中省略它

tsc app.ts --noEmitHelpers 

您可以在https://www.typescriptlang.org/docs/handbook/compiler-options.html

查看编译器的更多选项