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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.