DHH放弃TypeScript引前端社区哗然


Ruby On Rails的创建者DHH 在其turbo-8上从TypeScript换回Javascript:

从各方面来看,TypeScript 对微软来说都是一个巨大的成功。我看到很多人因为 JavaScript 中加入了可由编译器检查的显式类型而欢欣鼓舞。但我从来都不是它的粉丝。五分钟不喜欢,五年也不喜欢。因此,我非常高兴地宣布,在 Turbo 8 的下一个大版本中,我们将放弃 TypeScript。

事实上,我非常喜欢 JavaScript。我甚至可以说它是继 Ruby 之后我第二喜欢的语言。是的,遥遥领先,但也不失为第二。以前并非如此。但自从 JavaScript 中有了适当的类,以及 ES6 之后的所有其他改进之后,编写 JavaScript 就成了一种真正的乐趣。

我仍然认为 JavaScript 不适合我们在网络应用等式的服务器端所做的大部分工作,但我完全尊重并欣赏其他人的不同看法。在我看来,我们现在有了如此强大的 JavaScript,浏览器完全不需要编译器就能进行解释,这是我们的幸运。

对我来说,TypeScript 阻碍了这一切。这不仅仅是因为它需要一个明确的编译步骤,还因为它用类型体操污染了代码,给我的开发体验增添了很少的乐趣,而且经常会带来相当大的痛苦。本应简单的事情变得困难,而困难的事情变得 "任何"。不,谢谢!

不过,这并不是要让任何人改变什么。正如我在《编程类型与思维方式》一文中所讨论的,通常很少有程序员有兴趣改变他们对类型的看法。大多数程序员会在职业生涯的早期就发现自己被类型化强烈吸引,或者不被类型化强烈吸引,然后在职业生涯的余下时间里向自己和他人解释 "正确的选择"。

这就是 JavaScript 与 TypeScript 二分法的魅力所在,TypeScript 帮派意识到完全接管 JavaScript 是不可能的,所以从一开始就必须实现完全兼容,这一点值得称赞。Turbo 8 弃用 TypeScript 并不意味着你不能用它编写客户端代码,或使用任何其他采用它的库。我们可以混搭使用,这真是太好了。

这也是必要的。因为 JavaScript 与 Ruby 等语言不同,前者是服务器端的首选语言,而 JavaScript 则是客户端的必需语言。虽然你可以将方言编译到 JavaScript 中,但你仍然必须接受这样一个事实:在浏览器中运行代码就意味着运行 JavaScript。因此,在这种情况下,能够在不使用任何工具、不使用任何强类型的情况下编写 JavaScript 是一件幸事。

所以,再见了,TypeScript。愿你为你的部落带来更多严谨和满足,同时让我们其他人享受 JavaScript 最初设计时的光荣精神:没有强类型。

banq:类型和测试都是一个上下文的上文,也就是一个上下文的预设,假设前提,一旦这个预设是错误的,整个上下文作废,很显然,这会浪费你的时间,那么我们能把预设做的更正确吗?不能,因为你不能预见未来,或者你不可能对事物一镜到底看透,你需要理解过程,这是敏捷的原因,你需要反复推敲、否定之否定,特别是对于一个对象属于什么类型,需要如何测试,这些都是一个反复费周折地过程,如果预设类型错误了,全盘皆输,无类型的Javascript则在探索不确定问题上效率更高。