如何减少TypeScript转译新版JavaScript语法时生成的冗余代码?
解决方法
你遇到的是TypeScript对低版本target自动降级语法、注入重复辅助函数的问题,可通过以下配置优化:
- 调整target编译目标版本
ES6(ES2015)本身未原生支持async/await语法,因此TypeScript会将async/await转译为基于generator的兼容实现,同时注入__awaiter、__generator辅助代码。如果你的运行环境(Node.js ≥7.6、所有现代浏览器)支持ES2017及更高标准,直接将tsconfig.json中compilerOptions.target改为es2017或更高的esnext,此时TypeScript会直接输出原生async/await语法,生成的JS代码和你编写的TS代码结构几乎完全一致,不会有额外的辅助代码注入。 - 开启importHelpers减少重复注入
如果因为兼容性要求无法提升target版本,可在compilerOptions中开启importHelpers: true,同时安装依赖tslib:
开启后TypeScript不会把辅助函数重复写入每个JS文件,而是统一从npm install tslib --savetslib导入,既减少了代码体积,也不会改动你原有业务逻辑的代码结构。
调整后你的tsconfig.json核心配置可参考如下:
{ "compilerOptions": { "target": "es2017", "module": "es2020", "importHelpers": true // 其余原有配置保持不变 } }
内容的提问来源于stack exchange,提问作者CodingMonk
相关产品推荐
相关产品推荐

