nmsn / blog

记录日常遇到的问题,需要记录的笔记以及新学到的知识,会进行汇总和分类,自动更新 README,欢迎评论和补充,互相学习
36 stars 0 forks source link

tsc/babel 编译 ts 的选择 #38

Open nmsn opened 2 years ago

nmsn commented 2 years ago

如题

nmsn commented 1 year ago

原文:https://mp.weixin.qq.com/s/N5xVhQzBDy-Dj2ccFVru6Q

特点

babel

tsc

babel 编译的优势

产物体积更小

tsc 如果要支持 polyfill 的语法,只能手动引入 core-js;

babel 有相关的配置,而且可以选择按需加载 useBuiltIns: 'usage'

还可以通过 @babel/plugin-transform-runtime 来把全局的 corejs 的 import 转成模块化引入的方式

支持更新的语法

typescript 默认支持很多 es 的特性,但是不支持还在草案阶段的特性,babel 的 preset-env 支持所有标准特性,还可以通过 proposal 来支持更多还未进入标准的特性。

编译速度

tsc 会在编译过程中进行类型检查,类型检查需要综合多个文件的类型信息,要对 AST 做类型推导,比较耗时,而 babel 不做类型检查,所以编译速度会快很多。

推荐用法

{
    "scripts": {
        "typeCheck": "tsc --noEmit",
        "buildTsDe" "tsc --emitDeclarationOnly",
    }
}