第66期 | TypeScript的崛起
你好,这里是卖桃者说。今天和你聊一门新近崛起的编程语言。
不久前RedMonk发布了2019年6月(Q3季度)编程语言排行榜,榜单的前三名一如既往的稳定,还是 JavaScript、Java和Python 这三座大山。
与每月发布一次的Tiobe榜单不同,RedMonk一年发布两次 ,同时数据源追踪的是编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,所以榜单结果能相对公正的反应编程语言当下的使用趋势。
这次榜单的一大看点在于,经过这几年的狂飙突进后,TypeScript首次挤进了榜单前十。2018年的6月榜单中,TypeScript还处在16位,到2019年1月,TypeScript已经上升到12位,到了这次,TypeScript挤掉了Objective-C,顺利进入前十。
现如今,几大主流编程语言当道,其他编程语言想要上位是很难的。不过呢,仅仅一年时间,TypeScript就上升了6个名次,这非常难得。简单分析一下原因,TypeScript的成功肯定和榜首的JavaScript脱不了关系。在2018年的JavaScript开发者调查中,几乎一半的受访者表示他们尝试过 TypeScript,并会再次使用它。
众所周知,TypeScript 是 JavaScript 类型的超集,它可以编译成纯 JavaScript。你可以在TypeScript 中找到 JavaScript 中的所有功能,同时,TypeScript 又在安全、静态类型检查等方面有很大的提升。目前,很多大型前端项目的实践已经证明了,无处不在的JavaScript加上TypeScript 提供的安全性和类型检查特性是一个成功的组合。
TypeScript 的发展并非一直如此一帆风顺。2012年微软刚发布 TypeScript 的时候,由于微软一惯的技术封闭形象,很多开发者怀疑这是一门微软的“内部语言”,对 TypeScript 抱有抵触心态,那时候几乎没什么技术团队把它列进自家技术选型的考量对象中。
两年很快过去了,到2014年的时候,TypeScript 团队一想,这样下去不是个事啊,必须得做出改变了,于是他们把 TypeScript 的代码从 CodePlex(CodePlex 是微软运行的一个代码托管站点)迁移到了 GitHub,开始在 GitHub 上进行开发,采纳社区的反馈,接受社区的贡献,并跟社区积极互动,这才慢慢获得了开发者们的认可。
开放和开源,总是更容易被开发者接受。
另一方面,TypeScript 的流行也跟整个前端领域的大趋势相关,随着现代JavaScript的普及,以及Angular、Ember.js、NativeScript 等流行项目的使用,大概到2017年的时候,TypeScript 开始真正发展起来,并在随后的几年里人气不断攀升。
目前,TypeScript已经被很多大公司接受,不少项目都在使用它进行开发,也有不少团队通过转型将代码迁移到了 TypeScript,比如 Slack。那么,究竟是哪些优势让TypeScript获得了开发者的芳心呢?
1、与JavaScript 之间的互操作性极强
TypeScript是JavaScript的超集,只是在JavaScript之上添加了一个类型系统,所以你可以在支持JavaScript的任何环境中运行TypeScript。同时,TypeScript严格遵循ECMAScript规范,也就是说,当你在写TypeScript代码的时候,实际上写的是符合标准的现代JavaScript代码。在执行过程中,很容易就能将TypeScript代码编译并转换为JavaScript代码。
另外,当前市面上主流的前端框架,如React、Angular、Node和Vue等,都对TypeScript 提供了非常好的支持。这让TypeScript延续了JavaScript的优势,毕竟JavaScript之所以能称霸前端开发,很大程度上是因为它背后无数的框架、库和工具。
TypeScript与JavaScript之间极强的互操作性,让前端工程师感觉非常友好。只要有一点JavaScript 基础,那 TypeScript 的学习曲线就会比较平缓,正如 TypeScript 的共同作者 安德斯·海尔斯伯格(Anders Hejlsberg)所言,“如果你了解 JavaScript,那么差不多也就了解了 TypeScript。”
同时,项目从JavaScript切换到TypeScript也不像其他语言之间的切换那么麻烦,像 VSCode 这样的配套 IDE 为开发者提供一条非常平缓的迁移路径,只要在编译器把现有的JavaScript代码跑一遍,再将 .js 文件名改一下,解决一些暴露出来的问题就可以了。你甚至可以一边使用TypeScript 编写新代码,一边慢慢地替换老代码,不会妨碍到整个项目的开发进度。
2、提高了代码的准确性、安全性和健壮性,更适合大型项目
TypeScript 在 JavaScript 之上添加了一个类型系统,这是它的一大优势,你可以为属性、函数、变量等添加类型。这样,在编译代码时,TypeScript 会进行严格的静态类型检查,提前发现隐藏的 bug,提升最终代码的质量。
TypeScript 中的类型是可选的,也就是说它不会强制你声明类型,类型的严格和安全程度全由你自己来决定,你甚至可以在同一项目的不同区域,应用不同严格级别的类型。但总的来说,应用程序的规模越大、复杂程度越高,类型系统的价值也就越大。
虽然在开发中,你可能要多写一点类型定义代码,不少程序员会觉得比较麻烦,但 TypeScript 在 VSCode、WebStorm 等诸多IDE中都提供了智能提示功能,可以智能感知 bug,代码自动补全,这样可以极大增强了代码的准确性、安全性和健壮性,也让代码更易读,更方便维护。
这些特性,让基于 TypeScript 编写的项目更加稳定和可控,考虑到各种成本和开销,在相对较小的项目中,使用 TypeScript 的优势可能并不明显,但对于大型项目,使用 TypeScript 的长期好处远大于前期的成本开销。
另外一方面,TypeScript 是一种面向对象的语言,这种面向对象的语言具有接口、类、继承、模块等功能。目前前端领域的一个显著趋势就是团队规模和项目规模都在不断变大,项目复杂度也在不断上升,复杂软件需要用复杂的设计,而面向对象就是一种很好的设计方式。因此,在构建大型项目的时候,相较于JavaScript,TypeScript 是一个更好的选择。毕竟,TypeScript 诞生的原因,就是微软为了解决大型 JavaScript 项目中遇到的各种问题,而这些问题很多时候都是由 JavaScript 这门语言本身的短板造成的。
需要注意的一点是,TypeScript 和 JavaScript 不是竞争关系,他们各自满足不同的需求,相互补充。软件开发领域没有银弹,这是大家的共识,你的团队到底是选择 TypeScript 还是 JavaScript,要根据实际的项目情况、团队水平、技术认知等各种维度综合考虑,选出更适合的解决方案。
总体来说,TypeScript 走在了正确的道路上,趋势一路上扬,随着大前端领域的进一步扩大,我想 TypeScript 的热度还会继续攀升。想了解更多信息,打开极客时间发现页,搜索 TypeScript 即可。
好,今天的话题就先聊到这儿。卖桃者说,明天见。
(编辑:成敏)