
Ruby on Rails的创造者DHH(David Heinemeier Hansson),在博客提到自己从来都不是TypeScript的粉丝,而且认为该语言是他程序开发体验的阻碍,因此宣布从框架Turbo 8中删除TypeScript。而此举引来社交媒体开发者不满,并表示DHH决定过于仓促,可能导致现有生态系被破坏。
Turbo本身虽然不是一个热门框架,但却是Hotwire设计框架背后重要的组件,Hotwire的特色是能够大幅减少自定义JavaScript程序代码的使用,以HTML-Over-The-Wire策略来加速网页渲染。HTML-Over-The-Wire从字面意思解读是通过电线发送HTML,当应用程序需要更新或是发生变化时,由服务器直接发送HTML片段给客户端,而非发送JSON数据或是JavaScript程序代码,由客户端解析并渲染。
传统的前端框架当用户与应用程序产生互动时,服务器通常只会发送数据,然后才由客户端解析并渲染新的用户接口,但是在HTML-Over-The-Wire策略中,服务器则会直接发送完整或是部分的HTML片段,客户端只要将这些片段插入当前页面即可,该方法的优点是能够减少客户端处理JavaScript的复杂性,因为绝大多数的逻辑和渲染会在服务器端完成。
这种策略适合用于想要减少前端复杂性,但又想提高性能的时候,尤其是开发者想要保有服务器端渲染的好处,但又不想放弃客户端互动性的用例。
DHH宣布把Turbo中的TypeScript删除,这代表在接下来的Turbo 8中,不会支持与使用TypeScript,在Turbo框架中,官方便不再集成和考虑TypeScript。因此开发者在使用Turbo 8的时候,可能无法使用TypeScript特定功能。
在博客中,DHH提到自己喜欢JavaScript,甚至可以说是继Ruby第二喜欢的语言,在ES6之后,JavaScript加入了正式类别语法以及各种功能后,DHH认为用JavaScript编写程序代码变成一种乐趣。
许多贡献者在移除TypeScript的GitHub拉取请求页面留下意见,有开发者提到,Turbo从TypeScript转换回JavaScript,代表Hotwire生态系中许多组件都会故障,而且与此同时,所有开放拉取请求都已经过时,即便其中有一些良好的贡献,而且IDE也将无法像过去一样提供自动完成功能。甚至有不少开发者,认为这样的改变是一种退步。
由于TypeScript是一种强类型语言,变量、参数和对象属性都有明确的类型,而明确类型使IDE可以准确知道变量或对象的属性与方法,进而更有能力提供更具上下文的自动完成和程序代码提示。
DHH也在讨论流下回应,表示虽然使用TypeScript对一些人提供优势,但是他认为,不使用TypeScript也带来一些好处,程序代码更好阅读,而且也不需要为了满足TypeScript编译器进行额外的类型操作。37signals所有客户端程序代码和内部函数库都以纯JavaScript编写,而这项Turbo变更,将会使技术堆栈更一致,DHH也强调,自己的立场不会因为开发者的讨论而改变。
虽然Turbo 8放弃支持TypeScript,但这不代表客户端程序代码不能使用TypeScript或是其他TypeScript函数库,因为JavaScript和TypeScript间完全兼容,开发者仍然可以编写和执行TypeScript代码,因为TypeScript最终会被编译成JavaScript。DHH强调,Turbo 8不再支持TypeScript,并不会阻碍开发者使用TypeScript。










