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 圣战吵了这么多年,可能最终会以一种很无聊但很合理的方式结束——

不是谁赢谁输,而是大家都只想把活干完,早点下班。

 

 

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐