面对TypeScript,坚持JS的理由是什么?
“前端工程师用 JavaScript,C#工程师用 TypeScript,Ruby工程师用 CoffeeScript,Java工程师用Dart。”你对这句话怎么看呢?本文主要讨论了JavaScript和TypeScript之间的恩怨情仇,看看在大规模开发的场景下到底谁更强?企业更侧重于选择哪一种?
JavaScript虽说集程序员万千宠爱于一身,但对于企业大规模开发很难管理。所以企业开发都选用什么工具呢?TypeScript提供了一个有吸引力的选择!众所周知,TypeScript是JavaScript的扩展,但为什么各大排行榜上JavaScript总是排名更靠前呢?
在最新一期的TIOBE排行榜中,JavaScript排名第6,而前十名根本没有TypeScript的影子,那为什么企业大规模开发都会选用TypeScript呢?
对于越来越多的程序员来说,JavaScript是早已掌握了的技能,因此一直占据着编程语言排行榜前十名的位置。但JavaScript从来都不是团队构建大型复杂应用程序的首选,企业长期以来都喜欢Java和C#等强类型语言,但这些语言的虚拟机在浏览器中从来没有一个归属。作为JavaScript的延伸,TypeScript既弥补了JavaScript在大规模开发过程中的不足,又具备了适合各类浏览器的虚拟机。
正面交战:Github热度如何?
作为前辈,JavaScript的Star数量确实远高于TypeScript,但热度确不及TypeScript,TypeScript是微软的开源项目,其贡献者绝大多数都是微软的工程师,提交量达到20212,而JavaScript主要是Netscape和Mozilla基金会开源的,贡献者绝大多数都是来自这两大组织的成员,而提交量仅有1546份,可见TypeScript社区更为活跃、问题修复与反馈也十分及时。
TypeScript优势:简单易用!
对JavaScript有效的对TypeScript同样有效,因此可以通过简单地将.js的文件扩展名更改为.ts来使用TypeScript编译器和TypeScript感知工具。
TypeScript具备absolutelytyped.org收集类型定义,提供数百个JavaScript库(包括jQuery,Angular和Bootstrap)的定义并描述这些库的导出接口。由于TypeScript可以在任何平台上定位JavaScript虚拟机,并且不仅提供编译器,还提供一组支持智能编码的语言服务。
JavaScript弱势:静态类型检查, 代码重构和语言服务......
如果程序员只需要写两三千行脚本,那你可能用着JavaScript还乐在其中。如果程序员需要写个数万行脚本,还用JavaScript恐怕要叫苦不迭了,JavaScript的缺点恐怕可以说上一箩筐。TypeScript在静态类型检查、代码重构和语言服务方面的优势十分明显,而这些正好是JavaScript的劣势。
除此之外,JavaScript在字符串,数字和日期之间的隐式转换使得难以可视化流入和流出函数的对象类型。在团队开发中,对代码进行注释是极其重要的,如果你刚好负责一个底层库的开发,不需要再单独提交一份文档进行详细解释,TypeScript可以清楚记录每一个对象的属性,方法的参数等。JavaScript也可以做,但还是不够,还是需要单独写一份文档才够详细。
TypeScript优势:测试开销
说完了开发自然就是测试,对于团队开发而言,测试也是一笔不小的开销,事无巨细才能在市场上有立足之地。很多程序员或许都曾想过“编写静态类型输入的测试的可行性”问题,TypeScript是基于ECMAScript 6标准的实现,它的测试可将程序作为一组模块传播到多个文件。TypeScript采用的这种机制是大规模开发的福音。当以标准方式声明模块依赖关系时,程序员可以更容易地理解这些依赖关系,工具可以使这种理解自动化,代码重构风险较小。
总结一句话:对于Javascript来说,TypeScript就像未来的自己!随着技术的发展,JavaScript终会向着TypeScript的方向看齐,包括编辑器、各类库和API都会与TypeScript有更棒的集成,虽然现在已经很棒了。
所以,你的企业也在用TypeScript吗?如果你还在用JavaScript,你坚持的理由是什么呢?
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341