tsc编译与babel编译的对比和区别

277 阅读1分钟

今天突然奇想:如果为了快速启动一个项目,源码是ts的情况下,那我该是选择用tsc还是babel来进行编译呢?

然后查到一篇让人比较容易理解的文章,大家可以参考: 编译TS 代码用TSC 还是Babel?

对比

功能点tscbabel
源码转换成 AST 的 Parser
语义分析(作用域分析)
类型检查
AST 的 transform
使用 Generator(或者 Emitter)生成目标代码和sourcemap
过时的 export = import = 的模块语法
const enum❌ (会作为 enum 处理)
namespace 的跨文件合并
导出非 const 的值
支持更多的语言特性❌(支持最新的es标准特性和部分草案特性)
没有做 polyfill 的处理❌需要全量引入 core-js

总结

  1. babel 编译 ts 代码来生成体积更小的代码,不做类型检查编译速度也更快。

  2. 如果想做类型检查可以单独执行 tsc --noEmit。

  3. 本文只做对比,没有也不会给出用什么最好,具体用什么编译 ts,大家可以根据场景自己选择。