tsc VS babel

437 阅读1分钟

tsc和babel都可以将ts编译成js。

tsc编译优缺点:

优点:ts自带的编译器,更好的编译所有的ts代码,比如type、enum、namespace等都可以识别,并声成.d.ts声明文件。

缺点:不支持js的一些新的语法,比如还在提案阶段的语法就无法解析。另外,es6一些单独实现的功能比如Promise也无法解析,需要单独添加polyfill(在入口引入import "core-js";),全量引入,体积很大。

babel编译优缺点:

优点:可以识别js所有的新语法和Promise等es6新特性(通过babel插件)。

缺点:

1.与ts合作推出的typescript插件,不能识别一些ts特有的语法,比如enum、namespace等(因为babel编译ts的原理就是去掉类型声明,只保留js原有功能)

2.无法进行类型检查

用babel还是tsc??

参考官方文档,给出以下建议:

1.当需要输出文件和输入文件一一对应的时候,建议使用tsc

2.当需要跟现有的打包软件一起使用的时候,建议使用babel

参考文章:

# 编译 ts 代码用 tsc 还是 babel?

# Using Babel with TypeScript

为什么说用 babel 编译 typescript 是更好的选择