Typescript vs JavaScript – 理解差异
我常常收到的一个常见问题是,JavaScript和TypeScript之间的区别是什么?
让我们来找出答案…
从你开始编码的那一刻起,JavaScript(JS)就一直是你所有前端项目的一部分。如果你对JS有一点了解,那么你可以将TypeScript视为JS加上一些额外的功能,使你的应用程序更整洁和类型化。TypeScript是由微软开发的开源项目,旨在使JS开发更高效,并尽早捕获编译错误。
在本文中,我们将讨论JavaScript和TypeScript的一些重要特性以及两者之间的区别scripting languages。
什么是JavaScript?
JavaScript用于客户端脚本。你可以在HTML页面上创建脚本,也可以创建一个带有.js扩展名的文件,并将其包含在HTML文件中。一个常见的现实世界的例子是登录页面验证,当你的用户名/密码不正确时,会显示一个错误。
让我们编写一个简单的JS代码并在浏览器上运行它:
创建一个名为example.html的文件并添加以下代码:
这个简单的代码声明了一个变量,并将其值设置为happy(字符串)。我们可以将不同类型(数字)的值分配给同一个变量。JavaScript不会对此抱怨,我们可以在任何浏览器上运行代码而不会出现任何问题。现在,让我们从用户那里获取feeling的值:
我们的HTML将是这样的:
脚本将是:
feeling = document.getElementById("howyoufeel").value;
除非我们在脚本中放置显式检查,否则JS将接受用户的任何值并将其传递。所以,你可以在feeling变量中放任何东西,比如234、@.#$%等。
JavaScript的特性
从上面我们可以观察到JavaScript的以下特性:
- 弱类型脚本语言
- 用于客户端和服务器端(使用node.js)脚本
- 灵活和动态
- 被所有主要浏览器支持
- 轻量级和解释性
如果你有兴趣掌握JavaScript,请查看这个链接。
什么是TypeScript?
一个真实的应用程序将有许多验证和动态检查。对于这样的应用程序,由于没有类型检查,JavaScript代码在某些时候将变得很难测试。在从用户那里获取值时,最好在一开始就正确获取它们。这就是TypeScript的用武之地。
TypeScript是强类型的,并且有一个编译器,如果你不定义一个变量的类型,它会抱怨。
JavaScript和TypeScript都符合ECMAScript规范的脚本语言。TypeScript可以运行所有JavaScript代码并支持所有其库-这就是为什么它被称为JavaScript的超集。
TypeScript的安装
要在TypeScript中执行我们之前的代码,我们需要使用npm包安装TypeScript编译器(如果你有node js)。
npm install -g typescript
或直接从官方链接下载。你还可以使用链接查看如何从ts转译为js。
完成后,你可以在tsconfig.json中配置项目设置,并使用任何链接5或链接6编写TypeScript代码并将其保存为.ts。
你仍然可以不定义变量类型来完成任务,TypeScript可以推断数据类型。然而,如果你给出的不是第一次使用的类型(在我们的例子中是字符串),在编译过程中就会出现一个“feeling”错误。
对于代码的可维护性和易用性来说,添加类型注解总是很好的:
var feeling: string = “happy”;
这还不是全部!
TypeScript提供了许多其他功能,使开发人员的工作更加轻松。
TypeScript的特点
TypeScript具有丰富的功能集,每个发布版本都会带来新的功能,使开发比以前更加简单。例如,在新的发布版本(4.0)中,有可变元组类型、自定义JSX工厂、从构造函数中推断类属性等等。TypeScript的一些典型特点包括:
- 支持面向对象编程概念,如接口、继承、类和泛型
- 提早发现错误
- 支持IDE的语法检查和建议
- 由于有类型,更容易进行调试
- 可以转译为JavaScript
- 用于服务器端和客户端应用程序
- 跨平台和跨浏览器支持
- 支持所有的标准和扩展
为什么我们需要TypeScript?(TypeScript相对于JavaScript的优势)
微软在2012年将TypeScript公开之前,已经将其用于内部项目两年时间。他们创建了一种带有类型的JavaScript,因为这样更容易测试用于生产级企业应用程序的代码。您仍然可以使用动态类型特性,但只在真正需要时为变量添加类型。
考虑以下代码:
var mynum = //从用户获取;
addten(number){
return number + 10;
}
我们希望结果始终是一个数字。但是,如果用户输入了“sheep”会怎么样?输出将是sheep10 – 理想情况下,我们需要告诉用户这个操作是不可能的!
此外,当您有类型信息可用时,文本编辑器和IDE变得更加方便使用,并且可以避免运行时错误。而且,以后重构代码也更容易。
这是否意味着我们不需要JavaScript?(TypeScript相对于JavaScript的缺点)
您可以将TypeScript视为JavaScript的扩展,但绝对不是替代品。
对于较小的代码块,TypeScript可能会造成额外的负担 – 安装、编译、转译将是多余的。使用JavaScript,您可以简单地在HTML中键入脚本,然后它就会运行。您可以在每次更改时刷新浏览器时更容易进行调试。
一对一比较
现在我们已经了解了TypeScript和JavaScript的特点和优势,让我们进行更多比较:
此外,当您在开发大型应用程序时,具备JavaScript知识将帮助您轻松过渡到TypeScript。
然而,从职业和薪资角度来看,作为一个TypeScript developer,你在JS和TS项目中更加灵活和舒适 – 所以在市场上绝对是一个更好的资产。通常,TypeScript开发人员的薪资在每年$110k-$147k之间,而JS开发人员的薪资大约在每年$63k-$118k。