技术开发 频道

TypeScript是JavaScript和Java之间的妥协

  【IT168 编译】正如Jon Udell在2015年写道“JavaScript可能是一门Web语言”那样,在我们尝试将其应用于更复杂的问题时,它会迫使我们“篡改语言本身”。LinkedIn的高级软件工程师汤姆·戴尔(Tom Dale),曾经十分生动的形容过JavaScript,他说:JavaScript就像是嬉皮父母,他们不干涉的你的生活,让你彻底自由,可是你获得了解放,却最终没有满意。因为你没有任何结构,也许32岁了还住在父母的地下室中。

  相比之下,Java就像控制欲超强的父母,他们不会让你喝苏打水、看电视。而TypeScript则是这两者的中和。虽然Angular(Angular是用TypeScript编写的)帮助TypeScript收集到了很多人气,但是TypeScript受欢迎的真正原因是它让开发人员的生产效率显著提高。

TypeScript是JavaScript和Java的妥协

  像Udell指出的那样,JavaScript并不适用于使用复杂工具来管理内部模块和外部库之间、由复杂通信团队构建的大型程序。“这样的团队通常会默认使用类似于Java的强类型语言,因为有助于最大限度地减少编码错误。不过,由于基于以下的种种原因,我们最终选择JavaScript作为网页开发的通用语言。

  一个原因是Java的严格控制对Web开发有点不利。戴尔在接受采访时表示,“Java就像控制欲极强的父母,不会让你喝苏打水或看电视。每一个动作都会被监控,不能自己做决定。许多人在这样生活了很久之后都会崩溃,“父母的意图”可能是好的,但很明显影响是消极的。

  在自由、weed-smoking模式的JavaScript和紧张的full-frontal父母模式的Java之间,有一些程序员选择了alt-JavaScripts,如CoffeeScript,来避免JavaScript的缺陷。而这样泛化的语言影响了其与JavaScript的向后兼容性,同时也因不同的语法和语义,使得它们难于调试。

  而TypeScript是不同的。为什么呢?因为TypeScript不重写JavaScript。相反,正如Dale所言,“TypeScript因严格的约束而不同”。

  构建更好的JavaScript

  Dale表示TypeScript是JavaScript和Java之间是的妥协,它会引导你施加一些重要的规则,但最终会让你有机会自由地打破规则,所以你可以学习自己的课程。” TypeScript提供了Java的优势,同时利用了20年的计算机科学改进。这是一个很大的事情。。

  TypeScript 和 Flow 很类似,所以有人提出如果你在使用 Angular 2+,你会倾向于 TypeScript,因为它是在 Angular 社区中使用的主要语言。从另一方面来说,如果你在使用 React,你可能更喜欢 Flow,因为它更容易与 Babel 等你正在使用的基础工具整合。

  但是与TypeScript相比,Flow的发展就有点停滞不前,TypeScript的社区很流行,GitHub也将TypeScript在316个竞争编程语言中排在了第15位的流行的编程语言。

  Stack Overflow中有10%的开发人员现在在使用TypeScript,其受欢迎程度排在第17位。

  TypeScript的另一个普及原因是它容易学习。如果你了解JavaScript,那么即使是没有使用过TypeScript的人,也很容易想象。TypeScript只是JavaScript加上允许逐步类型检查代码所需的最小的语法添加集合。”

  重要的是,TypeScript依赖于结构类型,换句话说,如果您将数据转换成正确的类型,那么我们就可以明确的知道它是什么类型。Java是无法使用两个完全一样的对象,这也是人们诟病Java不灵活的原因之一。相比之下,TypeScript将严格的类型转化为像JavaScript一样的原因,动态和自由地运行。

  这种增量类型检查听起来很小,但其实它可以为开发人员的生产力带来巨大的收益。

  Narwhal联合创始人维克多·萨瓦金(Victor Savkin)表示TypeScript之所以受欢迎最重要的是它使JavaScript开发人员的效率远远高于原来的开发者,当然它还有很棒的工具。

0
相关文章