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的特点和优势,让我们进行更多比较:

TypeScript JavaScript 一种带有编译错误检查的类型化语言 可以在运行时发现错误 适用于大型项目,因为它提高了代码的可维护性和可读性 随着添加更多代码,测试和调试变得困难,因此JavaScript适用于小型项目 JS的超集,即具有面向对象、类型检查等功能 一种支持动态Web内容创建的脚本语言 需要安装编译器和配置设置

此外,当您在开发大型应用程序时,具备JavaScript知识将帮助您轻松过渡到TypeScript。

然而,从职业和薪资角度来看,作为一个TypeScript developer,你在JS和TS项目中更加灵活和舒适 – 所以在市场上绝对是一个更好的资产。通常,TypeScript开发人员的薪资在每年$110k-$147k之间,而JS开发人员的薪资大约在每年$63k-$118k。

类似文章