Typescript “全网圣战”回忆录
2023 年某天,我下班回到家,外卖刚到,电脑一开,随手点开csdn。本来我只是想放松一下,结果一看标题——TypeScript——我就知道完了:今晚又要被拖进“全网圣战”回忆录。
视频一开头就把时间往回拨。
2017 年,圈里很有名的 JavaScript 教育者 Kent C. Dodds 放话特别干脆:
“我不用 TypeScript,所以我也永远不打算支持它。”
我边吃边点头:嗯,这种“我就是不用”的态度,当年真不稀奇。
镜头一转到 2019 年,他又补一句,语气更像是对气氛不适:
说大家对 TypeScript 那种“热爱到发烫”的劲儿,把他吓到了。
我差点笑出来——因为我脑子里立刻浮现出那种场景:群里有人刚说一句“我觉得 TS 也就那样”,下一秒就有十个人冲上来,像宗教辩论一样开怼。
然后就到了 2023 年。视频的意思很明确:TypeScript 这局基本算赢了。
你愿不愿意不重要,反正大部分人迟早都会用上。
我看着看着还挺有代入感,因为我自己也是:以前写 JS 写得飞起,现在换到新项目,要是不配 TS,我反而会心里没底。
但剧情到这儿突然反转。
正当我以为这期要进入“TS 伟大胜利总结”,它忽然说:风向开始变了——一些大项目居然开始撤退,把 TypeScript 从代码库里撤掉,回到原生 JavaScript。
我当时心里“咯噔”一下:
真的假的?用过 TS 的人,怎么舍得回去?
那种经典报错——cannot read properties of undefined——你们不怕再见到它吗?
大型项目重构时那种“改一行炸一片”的恐惧,你们不记得了吗?
我一边吐槽一边继续看。视频说要理解这一切,得从更早讲起:
2012 年微软发布 TypeScript,当时基本没人太当回事。
后来 Angular 2 采用 TypeScript,大家还觉得疯了。
我边看边在心里接梗:这不就是典型路线嘛——
一开始他们觉得你疯了,后来他们跟你打架,然后你要么改变世界……要么进监狱。
时间快进到 2020 年代初,TypeScript 已经铺满全场。
以前反对的人,很多都“真香”了。
就在大家以为 TS 要走到“辉煌顶点”的时候——反向潮流来了。
视频点名了几个项目:Svelte、Drizzle、Turbo。
它特别强调了一点:这不代表用户不能写 TypeScript。
比如你用 Svelte 做应用,当然照样可以写 TS;
变化在于:这些项目的维护者不想再用 TypeScript 写库本身的源码了。
听到这儿我更懵了:
那你们到底图啥?省那点类型安全吗?
然后视频直接抛出一个例子:**DHH(Ruby on Rails 的作者)**写文章解释为什么 Turbo 8 要去掉 TS。
理由居然不是“编译麻烦”,而是他说 TypeScript 会把代码搞得很脏——满屏都是他称为 “类型体操(type gymnastics)” 的东西。
我当场就懂了。
因为我自己也经历过:为了让 IDE 里红色波浪线消失,我能写出一堆“只为取悦编译器”的代码。
你说它有没有用?有用。
但它漂不漂亮?很多时候真不漂亮。
视频里还讲到一个特别真实的段子:旁白说他在写自己的库(类似 SvelteFire 这种),有时候你很想直接 any 一把梭,反正能跑就行。
但他又说“老板会骂我”,甚至夸张到“精神和肉体虐待”。
我差点喷饭,因为下一句更好笑——他是自雇的。
所以那个“老板”其实就是他自己:自己骂自己,自己压榨自己。
这太真实了,我打工人都觉得被精准狙击。
更扎心的是,他还开了 strict mode(严格模式)。
我也开过。开了之后你就知道:
你越想“少写类型”,越容易被逼到最后只能 any,
然后你又开始怀疑人生:我这到底是在写“更安全的代码”,还是在写“更痛苦的代码”?
接着视频把镜头转到社区反应。
他说你去看 Turbo 的 GitHub,那不是讨论,是“垃圾桶起火(dumpster fire)”。
我脑补了一下评论区:
有人怒骂“你们怎么能这样”,有人说“我做的 TS 贡献怎么办”,
还有人可能直接开喷“这是倒退”。
毕竟你辛辛苦苦写的 TypeScript 贡献,一夜之间成了“历史遗迹”,换谁都炸。
然后它又提到 Svelte。
这次理由更“工程化”:少一个编译步骤,生产力直接上来。
Rich Harris 写的解释里提到 Svelte 5 不再使用 TypeScript,
而且 SvelteKit 早就已经是原生 JavaScript 写的。
我听到“没有 compile step”这句时,心里其实是有点动摇的:
要是构建流程能简单一大截,维护起来确实舒服。
但我马上又想到:那类型怎么办?
结果视频说他们并不是彻底放弃类型体验,而是用 JSDoc。
也就是说,源码还是 JS,但通过注释写类型信息,
再生成类型定义(比如 .d.ts),
编辑器照样有 IntelliSense(智能提示),该提示提示,该校验校验。
我这才反应过来:
哦,所以他们追求的不是“不要类型”,而是“不要那堆类型体操污染源码”。
看到这儿,我基本明白了:
我用 TypeScript,核心需求也不是“我爱类型”,
而是我爱它带来的现实好处——更安全的重构、更早发现错误、更不怕改代码。
所以最后视频问:要不要彻底抛弃 TypeScript?
我把饭盒盖上,想了想自己的日常:
如果我是写库、写框架、维护底层工具——也许回到 JS + JSDoc 真能说得通。
但如果是做实际业务应用,尤其像 SvelteKit / Next.js 这种 TypeScript 集成特别深的生态,
我短期内根本不想折腾。
要我只靠 JSDoc 做出同等体验?我感觉会是噩梦级别。
视频最后还提了一嘴未来:
现在有个 ECMAScript Stage 1 的提案,想把“可选类型注解”带进 JavaScript 标准。
如果有一天真进了标准……那 TypeScript 可能就会变得没那么“必需”。
我看完把视频暂停,靠在椅子上想:
这场 TypeScript 圣战吵了这么多年,可能最终会以一种很无聊但很合理的方式结束——
不是谁赢谁输,而是大家都只想把活干完,早点下班。
更多推荐


所有评论(0)