7月8日,微软正式发布了 TypeScript 7.0。这个版本最核心的变化,用一句话概括就是:整个 TypeScript 编译器,被用 Go 语言从零重写了一遍。
很多人看到这个新闻,可能觉得「哦,TypeScript 更新了」,然后就划走了。但我仔细研究了一下这个更新,觉得它和独立博主群体其实还挺有关系的——尤其是那些用 Astro、Hexo、Hugo 这些静态博客框架写文章的朋友。
TypeScript 诞生于 2012 年,最初是微软内部的一个实验性项目,后来变成了前端领域最重要的工具之一。它用 JavaScript 写的——这在当年没问题,但随着 TypeScript 被广泛用于超大型项目(比如 VS Code 本身就是用 TypeScript 写的),编译器的性能瓶颈开始显现。
具体来说,就是文件大了、依赖多了之后,tsc(TypeScript 编译器)会变慢。编辑器里的代码补全、语法检查、错误提示,都会跟着卡。这种卡顿其实不是编辑器本身的问题,而是语言服务器(Language Server)在跑 TypeScript 编译器时太慢导致的。
7月8日发布的 TS 7.0,彻底用 Go 重写了编译器。根据微软的测试数据,完整构建场景下速度提升 8 到 12 倍,编辑器响应时间(文件打开、代码搜索、自动补全)也有了质的改善。
主导这次重写的,是 Anders Hejlsberg——C# 和 Delphi 的原创设计者,TypeScript 的首席架构师。他选择 Go 而不是 Rust 的理由很有意思:Go 的内存管理模式和现有 TypeScript 代码库的编码范式高度契合,可以降低迁移风险,同时享受 Go 的并发优势和单二进制部署的便利。
好,问题来了:TypeScript 编译器变快了,和我写博客有什么关系?
关系在这里:Astro、Next.js(部分)、Remix,这些主流静态博客和建站框架,都是用 TypeScript 写的。 你的博客源码里,大概率有 .ts 和 .tsx 文件。每次你 npm run dev 启动开发服务器,或者 npm run build 做生产构建,背后都在跑 TypeScript 编译器。
TS 编译器慢了,你的开发体验就卡;TS 编译器快了,你每次保存、刷新、预览,都会明显更流畅。
用 Astro 搭过博客的朋友应该知道,Astro 的内容集合(Content Collections)和 Markdown 处理都依赖 TypeScript 的类型检查。当你写完一篇文章,TypeScript 在后台校验 frontmatter 字段是否正确、类型是否匹配——这个过程现在会快很多倍。
简单说:你不用学 Go,不需要懂编译器,但你的开发工具已经悄悄升级了。
第一种:写文章时的预览更快了。
很多博主喜欢在本地跑一个热更新服务器,一边写 Markdown 一边看效果。TS 7.0 之后,热更新的类型检查环节会明显变快,等于你每次按保存键,等页面刷新的时间变短了。
第二种:主题定制时的编译等待更短了。
Astro 主题的一个魅力在于高度可定制——你可以改布局、加功能、改样式。但每次改完跑一遍 build,在 TS 慢的时候可能要等十几秒甚至更久。8 到 12 倍的提速意味着,原来等 12 秒的 build,现在可能 1 秒出头就出来了。
第三种:编辑器卡顿减少了。
VS Code、WebStorm 这类主流编辑器,背后都在用 TypeScript Language Server 做实时类型检查。TS 7.0 让这个环节大幅加速,编辑器的响应会更跟手——这对那些喜欢在 VS Code 里写博客的博主来说,是一个很实在的改善。
当然,这些改善有一个前提:你的 Node.js 环境要能正常安装 TS 7.0。 目前 TS 7 处于早期正式版阶段,部分类型声明库可能还没完全适配。如果你用的是 Astro 的默认模板,大概率不需要做什么,等官方推送更新就行。
另外需要注意的是,这次重写是编译器层面的,TypeScript 语言本身的语法几乎没有变化——你不需要重新学习任何新语法,现有代码基本可以无缝迁移。
我觉得这件事有趣的地方在于:很多独立博主其实是用别人的工具在写作,TypeScript、Astro、VS Code……这些工具离「内容」很远,离「技术」很近,我们大多数人不会去深究底层发生了什么。
但有时候,底层的改变会以某种方式传导到表面——编译器快了,开发体验就顺了;框架性能好了,博客加载就快了;工具链成熟了,折腾博客的时间就少了,多出来的精力可以放在真正重要的事情上:写什么。
如果你用 Astro 或其他 TypeScript 驱动的博客框架,最近可以关注一下 TS 7.0 的适配进度。更新之后,开发体验大概率会有一个感知明显的提升——而你可能永远不会知道背后的 Go 语言重写。
但没关系,知道也好,不知道也罢,工具变好了,总归是一件好事。
正在加载评论...