来自顶级大佬 TypeScript 之父的 7 个启示

最近,GitHub 发布了一份与 Anders Hejlsberg 的深度访谈,你可能不知道这个名字,但你肯定听说过 Turbo Pascal、Delphi、C# 和 TypeScript。

对,他就是 Turbo Pascal 和 Delphi 的创建者,C# 的首席架构师,以及 TypeScript 的设计者。

从这次深度访谈中,我总结出了一套构建能够经受规模化考验的系统模式。以下是我学到的 7 个经验:

1. 快速反馈:最为重要

Hejlsberg 说,Turbo Pascal 的成功不是因为 Pascal 语言本身有多好,而是因为它能让开发者能"立刻"看到结果。

同样,TypeScript 的价值不仅在于语言本身,更在于其强大的工具链:增量检查、快速响应,哪怕是在大型代码库。

所以快速反馈能够改变行为

当错误能够立刻出现,开发者会进行更多的重构和测试,于是问题在出现之初就被解决。

反之,当反馈延迟,团队则会通过通过约定俗成的规则、变通方案以及额外的流程开销来弥补。

所以无论选择编程语言、框架还是内部工具,响应速度都至关重要。能够缩短编写代码与理解其后果之间距离的工具往往更受信任。

2. 团队协作:放下个人偏好

当 Hejlsberg 从单独工作转向带领团队,最难的调整不是技术层面,而是学会放弃个人偏好。

Anders Hejlsberg 说:"你必须接受事情的进展与你的预期有所不同。即便解决了这个问题,也改变不了事情的本质。"

这种思维方式远不止于适用于语言设计。

任何需要跨团队扩展的系统都需要从个人品味转向共同目标。

目标不再是编写符合你个人风格的代码,而是编写多人都能理解、维护和共同演进的代码。

C# 的诞生并非源于一个全新的理想,而是源于各种相互冲突的需求。Visual Basic 开发者追求易用性,C++ 开发者追求强大功能,而 Windows 则要求务实。

最终的结果并非理论上的纯粹,而是一种足够多的人能够有效使用的语言。

语言的成功并非源于其完美无缺的设计,而是源于其能够适应团队实际的工作方式。

3. 顺势而为:为什么 TypeScript 选择扩展 JavaScript

TypeScript 为什么能成功?

不是因为它比 JavaScript 更"完美",而是因为它选择了"扩展"而不是"替代"。

当时很多团队为了用上静态类型,直接用其他语言编译成 JavaScript。这种"推倒重来"的做法,要求开发者放弃现有的工具、库、思维模式------成本太高了!

TypeScript 的聪明之处就在于:我不要你放弃任何东西,我只是在你现有的基础上加点内容。

这背后其实也是妥协。

尊重现有工作流程的改进往往得到传播,需要全面替换的改进则很少能实现。

有意义的进展往往来自于让你已经依赖的系统变得更强大,而不是试图重新开始。

4. 透明化:公开透明建立信任

TypeScript 团队在 2014 年做了一个重要决定:完全开放开发过程,所有讨论都在 GitHub 上进行,让全世界都能看到他们是怎么做决策的。

这样做有什么好处?

开发者不仅能看到最终成果,还能理解为什么这么做。信任就这样建立起来了。

对团队来说,这也改变了工作优先级。他们可以直接查看开发者关心的问题,而不是猜测什么最重要。

所以最有效的开源项目不仅仅是分享代码。它们使决策过程可视化。这样贡献者和用户就能理解如何设定优先级,以及为什么做出权衡。

5. 必要的突破:什么时候该彻底重做

TypeScript 团队曾经用 JavaScript 来写 TypeScript 编译器,这在小项目时没问题。但随着项目越来越大,JavaScript 的单线程特性成了瓶颈。

这时他们做了一个艰难决定:把编译器用 Go 语言重写

这不是为了炫技,而是因为技术限制已经到了不突破就无法继续发展的地步。

而这次重写的目标是语义保真度。新编译器需要表现得与旧编译器完全一样,包括怪癖和边缘情况。

结果就是带来了显著的性能收益,而社区也不必重新学习编译器。

所以有时最负责任的选择不是雄心勃勃,完全重写,而是保持最小化破坏,并移除无法通过增量优化克服的硬限制。

6. AI 时代:基础比想象力更重要

Hejlsberg 对 AI 时代的编程有个很深刻的观点:

在 AI 能生成代码的时代,工具的价值不在于创造,而在于约束。

想象一下,如果 AI 可以写代码了,那程序员的价值在哪里?就在于他们知道什么时候约束 AI,知道什么是正确的,什么是错误的。

所以AI 辅助工作流程中最有价值的工具不是生成最多代码的工具,而是正确约束它的工具。

强大的类型系统、可靠的重构工具和准确的语义模型成为必不可少的护栏。它们提供了允许 AI 输出被审查、验证和有效纠正而不是盲目信任的结构。

7. 开放协作:至关重要

尽管面临资金和维护的挑战,Hejlsberg 对开放协作依然保持乐观。一个原因是制度记忆。哪怕是多年前的讨论、决策和权衡,仍然可以搜索和可见。

"我们有 12 年的历史记录在我们的项目中,"他解释道。"如果有人记得发生了讨论,我们通常能找到它。上下文不会消失在电子邮件或私人系统中。"

这种可见性改变了系统如何演变。设计时的辩论、被拒绝的想法和权衡在个人决策做出后很长时间仍然可访问。

对于以后加入项目的开发者来说,这种共享上下文常常与代码本身同样重要。

总结

你会发现,在 Anders Hejlsberg 40 年语言设计的历程中,同样的主题反复出现:

  • 快速反馈比优雅更重要

  • 系统需要容纳许多人编写不完美的代码

  • 行为兼容性往往比架构纯粹性更重要

  • 透明化的权衡取舍能够建立信任

这些并非次要因素,而是决定工具能否随着用户群体增长而不断适应的根本性决策

此外,它们也为创新奠定了基础,确保新想法能够在不破坏现有有效机制的前提下生根发芽。

对于任何致力于打造经久不衰的工具的人来说,这些基本要素与任何突破性功能都同样重要。而这或许才是最重要的一课。

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的"网页版朋友圈",关注我的公众号:冴羽(或搜索 yayujs),每天分享前端知识、AI 干货。

相关推荐
leafyyuki2 小时前
在 Vue 项目中玩转 FullCalendar:从零搭建可交互的事件日历
前端·javascript·vue.js
决斗小饼干2 小时前
低代码平台工作流引擎设计:从状态机到智能流转的技术演进
前端·低代码·工作流引擎
豆苗学前端2 小时前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试
米丘2 小时前
了解 window.history 和 window.location, 更好地掌握 vue-router、react-router单页面路由
前端
swipe2 小时前
箭头函数与 this 面试题深度解析:从原理到实战
前端·javascript·面试
星_离2 小时前
《Vue 自定义指令注册技巧:从手动到自动,效率翻倍》
前端·vue.js
狗头大军之江苏分军2 小时前
消耗 760万 Token 后,一文看懂了“小龙虾” OpenClaw 和 OpenCode 的区别
前端·后端
毛骗导演2 小时前
万字解析 OpenClaw 源码架构-安全与权限
前端·架构
哇哇哇哇3 小时前
vue3 ref解析
前端