吐槽 tsc 的几大罪状

查看 22|回复 1
作者:molvqingtai   
1. 2024 年了,tsc 编译出的 js 代码还不能直接在任何 js runtime 中运行
输入文件 index.ts
import foobar from 'foobar'
你以为的输出 index.js
import foobar from 'foobar.js'
实际输出 index.js
import foobar from 'foobar'
??? tsc 编译出的 js 代码居然是坏的,没有 .js 扩展名,根本不能运行
如果你觉的上面的结果是 tsc 为了不破坏用户代码的语义,那么此时你肯定想我加上 .ts 就好了。
修改 index.ts
import foobar from 'foobar.ts'
就...好了???
不好意思,tsc 版本低于 5.0 根本不支持导入 .ts 后缀的文件,ts 编译器居然不支持导入 ts 文件???
好了,你说我大不了升级版本到 5.x 吧
完事之后你就会遇到一个错误,让你在 tsconfig 中配置 allowImportingTsExtensions: true
等你刚配置完又报错了,提示你必须配置 noEmit 或 emitDeclarationOnly
啥???,我这一通折腾不就是为了输出正确的 js 代码?
让我配置 noEmit 不输出 js 代码只输出类型文件,我还编译个啥?
2. tsc 配置项超多,此处 webpack 笑而不语
3. tsc 是目前前端工具链中最慢的一环了吧....
使用 esbuild 编译,tsc 检查类型
npm run build
✔ build success 784ms
✔ check success 17s
molvqingtai
OP
  
5.0 之所以支持导入 .ts 还是因为 Deno
作者迫不得已才选了一种折中方式(开启此选项无法输出 js 文件),虽然有无数开发者都提了关于输出 .js 和导入 .ts 的 issues
但是作者 bababab...一大堆得到的回复是永远不会支持重写导入文件的后缀
您需要登录后才可以回帖 登录 | 立即注册

返回顶部