是JavaScript的衰落,还是TypeScript的崛起?

发表时间: 2019-12-31 17:13

由于TypeScript的先天优势,TypeScript越来越受欢迎。那问题来了:TypeScript 和 JavaScript 究竟哪个更好?JavaScript真的会败北吗?

作者 | Mahdhi Rezvi

译者 | 明明如月,责编 | 郭芮

以下为译文:

你以前可能曾听说过“TypeScript”这个词。到现在 2019年,TypeScript 在 GitHub 最常用编程语言排行榜排名第 7 位,在增速最快的编程语言排行榜中占第 5 位。

TypeScript (TS) 是微软开发的一种开源编程语言,可以编译成 JavaScript (JS) 代码。自 2012 年发布以来,这门语言一直保持活跃发展并且越发受欢迎。

在早期,开发社区就将 TypeScript 和 Angular 紧密联系在一起。尽管用 JS 也不是不行,但是 Angular 强迫你使用 TypeScript。

TypeScript 和 JavaScript 的区别是什么?

Typescript 是 JavaScript 的超集,可以被编译成 JavaScript 代码。 用 JavaScript 编写的合法代码,在 TypeScript 中依然有效。 Typescript 是纯面向对象的编程语言,包含类和接口的概念。 程序员可以用它来编写面向对象的服务端或客户端程序,并将它们编译成 JavaScript 代码。

TypeScript和 JavaScript的关系,图源:GeeksforGeeks

TypeScript 引入了很多面向对象程序设计的特征,包括:

  • interfaces 接口

  • classes 类

  • enumerated types 枚举类型

  • generics 泛型

  • modules 模块

主要不同点如下:

  • TS 是一种面向对象编程语言,而 JS 是一种脚本语言(尽管 JS 是基于对象的)。

  • TS 支持可选参数, JS 则不支持该特性。

  • TS 支持静态类型,JS 不支持。

  • TS 支持接口,JS 不支持接口。

为什么要用 TypeScript ?

  • TS 在开发时就能给出编译错误, 而 JS 错误则需要在运行时才能暴露。

  • 作为强类型语言,你可以明确知道数据的类型。代码可读性极强,几乎每个人都能理解。

  • TS 非常流行,被很多业界大佬使用。像 Asana、Circle CI 和 Slack 这些公司都在用 TS。

为什么不该用 TypeScript ?

  • TS 需要编译。TS 得通过编译才能变成 JS 代码。

  • 随着时间的推移,类型可能变得非常复杂。当项目不断变大时这种情况十分常见。

  • 尽管 TS 是类型安全的,在有些情况下编译器也有检查不出任何错误的情况。当我们修改编译后的 JS 代码时,错误就不可检测了。不过随着编译器不断改进,这种情况会越来越少。

摘要


JavaScriptTypeScript
语言脚本语言面向对象编程语言
学习难度灵活易学需要有脚本编程经验
类型轻量级解释编程语言强类型的面向对象编程语言
客户端/服务端客户端服务端都有侧重客户端
拓展名.js.ts 或 .tsx
耗时更快编译代码需要些时间
数据绑定没有类型和接口的概念使用类型和接口表示数据
注解不需要注解使用注解才能最大限度发挥 TypeScript的特性
语法所有的语句都写在脚本标签内。浏览器将脚本标签内的文本识别为脚本一个 TypeScript 程序由模块、方法、变量、语句、表达式和注释构成。
静态类型JS 中没有静态类型的概念支持静态类型
模块支持不支持模块支持模块
接口没有接口支持接口
可选参数方法不支持支持
原型没有这种特性支持原型特性
开发者社区JS 使用范围很广,被编程社区广泛接受和使用TS 比较新,编程社区相对较小
参考选择小型项目TS 是一种面向对象语言,代码更简洁,可读性和复用性强。因此 TS 更适合大型项目。

表格来自:Edureka

结论

那问题来了:TypeScript 和 JavaScript 哪个更好?

由于 TS 的先天优势,TS 越来越受欢迎。但是请记住,TS 最终不可能取代 JS,因为 JS 是 TS 的核心。

选择 TypeScript 还是 JavaScript 要由开发者自己去做决定。如果你喜欢类型安全的语言,那么推荐你选择 TS。 如果你已经用 JS 好久了,你可以选择走出舒适区学习 TS,也可以选择坚持自己的强项,继续使用 JS。

本文到此结束,希望你能有所收获,轻松快乐的学习。

原文:https://medium.com
/javascript-in-plain-english/is-typescript-the-way-forward-659caa2cb10f

作者:Mahdhi Rezvi,移动开发工程师,曼彻斯顿大学计算机专业本科生,热衷学习新技术。译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。

本文为 CSDN 翻译,转载请注明来源出处。