我将我的TypeScript应用程序分成多个文件,通常每个类一个。当我发布我的应用程序时,我将它们连接并缩小为一个文件。我遇到的问题是TypeScript generatred __extends函数被放入每个编译的JavaScript文件中。所以我最终会在最终产品中使用相同代码的多个副本。
有没有办法告诉编译器只将__extends函数放在一个JavaScript文件中?还有其他解决方案吗?
答案 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
查看编译器的更多选项