你好 ,我是周爱民。
各位同学,从开课学习到现在,相信你一定对标题中这句感概深有体会。这句话的原文 “Why is TypeScript being so mean to us?” 来自于 TypeScript v4.3 的 release-note,是出自 TypeScript 开发者“自己的”一声叹息。
对很多同学来说,对这种“刻薄”最深刻的感受就在于——刚刚觉得自己好像懂了,下一秒又陷入不解。这种反复横跳贯穿了整个学习过程,令人感到蹉跎迷惘。
其实,不仅是同学们,就连我在制作课程时也深有同感。比如,“TypeScript 是什么?”这个问题的答案就在我的认识过程中不停地演变。
在开篇词中,曾说 TypeScript 是语言补充、是工具,也是语法扩展。这在表面上看来是没错的,但都是从“如何用它”的角度来给出的答案:你写代码,它就是语言;你做项目,它就是工具。这是最容易为程序员认识和理解的视角,但却非常难于触及 TypeScript 作为语言的本质。
当我们把“如何用”的答案预期从问题中去除掉,真正地问“作为语言,TypeScript 是什么”时,或许才可以触及某些真相。比如,TypeScript 语言规范手册(TypeScript Language Specification)的编写止步于 2016 年的 v1.8 版本,已经快 10 年未更新了。又比如,TypeScript 其实至今也没有明确列出它究竟有哪些运算符,以及这些运算符的优先级如何排列。换而言之,TypeScript 本身,就是一门尚未设计定型的语言。它既未能定型,我们又如何能用“是什么”来定义它?