TypeScript vs JavaScript:你应该使用哪一个,以及为什么

917 阅读7分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

本文将介绍 TypeScript 与 JavaScript:它们如何比较,以及何时使用 TypeScript 与 JavaScript。我们将探讨 TypeScript 实际上是什么,它为什么存在,以及它的优点和缺点是什么。

什么是TypeScript

TypeScript是一种由微软开发和维护的开源编程语言。它是 JavaScript 的超集:任何 JavaScript 代码都在 TypeScript 环境中运行。

创建 TypeScript 是为了解决在 JavaScript 中开发大型应用程序时遇到的问题。这些类型的应用程序包含数百个不同的文件。进行一项更改可能会影响多个文件的行为。由于 JavaScript 无法验证这些文件之间的连接,因此开发人员有很大的空间犯错误,从而导致生产中的错误。这就是为什么需要像 TypeScript 这样包含静态类型检查的前端语言的原因。

TypeScript 是一种编译语言,与 JavaScript 不同,JavaScript 是一种解释语言。您需要将 TypeScript 编译为 JavaScript 才能在浏览器中工作。要将 TypeScript 编译为 JavaScript,可以使用TypeScript npm 包。

如果您来自 C# 或 Java 等面向对象的语言,您会在 TypeScript 添加的列表中发现许多熟悉的功能。我最喜欢的包括添加枚举、接口、访问修饰符、命名空间、泛型等等。

由于许多外部 npm 库是用 JavaScript 编写的,TypeScript 需要一种对它们进行类型检查的方法。这就是类型声明文件(.d.ts文件)发挥作用的地方。这些类型声明为类型定义提供了有关代码的信息。编译器使用它们对 TypeScript 代码进行类型检查。如今,大多数 JavaScript 库都有为它们编写的 TypeScript 定义。即使库缺少这些定义,TypeScript 有时也可以推断出类型。或者,您可以自己快速编写定义。

TypeScript 非常适合大型 Web 应用程序,因为您可以使用它编写前端和后端代码。在后端,您需要安装一个名为ts-node的库来在Node.js 环境中执行 TypeScript 代码。

TypeScript 与 JavaScript 的优势是什么?

2022 年,TypeScript 加入了全球最常用的 5 种语言。这不足为奇,因为 TypeScript 不断开发、添加新功能,并且拥有 TypeScript 团队倾听的出色开发者社区。

与常规 JavaScript 相比,TypeScript 最显着的优势是它的编译器,它提供了类型和错误检查。它检查类型有效性并实时显示错误。它在重构代码时特别有用,因为编译器会向您显示您可能遗漏的内容。

TypeScript 与 JavaScript:代码片段上的 TypeScript 编译器消息

当与 Visual Studio Code 等较新的 IDE 配对使用时,TypeScript 提供了出色的 Intellisense 功能,例如代码提示和代码完成。这些功能有助于提高程序的开发速度。

使用该tsconfig文件,开发人员可以配置 TypeScript 的行为。例如,TypeScript 提供了将代码转换为早期版本的 JavaScript 的选项,因此代码可以在所有浏览器上运行。开发人员的另一个选择是 TypeScript 的严格模式,它添加了更多检查以确保代码的正确性。

另一个很棒的 TypeScript 功能是它能够与 JavaScript 代码并行运行,从而更容易在具有许多 JavaScript 文件的遗留项目中实现。

此外,TypeScript 允许使用一些主流浏览器尚不支持的 ES6 和 ES7 候选特性。例如,可选链运算符和类常量早在 ECMAScript 正式支持它们之前就已在 TypeScript 中可用。

最后,TypeScript 提供了许多 JavaScript 所缺乏的特性,这让编码变得更加有趣和愉快。诸如接口、枚举和泛型等功能,仅举几例,显着提高了代码的可读性。

TypeScript 与 JavaScript 的缺点是什么?

尽管 TypeScript 提供了多种优点,但它也带来了一些缺点。这些缺点都不是交易破坏者,但新开发人员需要了解并考虑它们。

TypeScript 最大的缺点是它给用户带来了虚假的安全感。确实,当开发人员使用 TypeScript 时,他们往往过于依赖它的编译器,希望它能标记出每一个类型错误。你不应该期望你的 TypeScript 代码是 100% 防弹的。这是 TypeScript 的开发团队做出的选择:希望 TypeScript 在灵活性和正确性之间取得平衡。虽然 TypeScript 不是万无一失的,但在我看来,它仍然比普通的 JavaScript 代码要好,因为它的编译器会发现你在其他情况下不会发现的错误。

TypeScript 的另一个缺点是需要额外的编译步骤。此步骤可能会减慢构建时间并使捆绑程序设置复杂化。

由于 TypeScript 添加了许多前端开发人员可能不知道的新功能,因此它增加了代码库的学习曲线。事实上,当 TypeScript 充分发挥其潜力时,对于未经培训的开发人员来说理解起来可能具有挑战性,并且需要大量的谷歌搜索或老队友的指导。

TypeScript 与 JavaScript:复杂的 TypeScript 代码

最后,一些开发人员抱怨使用 TypeScript 需要添加大量额外的代码来定义类型。虽然确实如此,但从长远来看,这可以节省时间,因为让新项目成员入职更简单。它还使代码库的重构更容易。

什么时候应该在新项目中使用 TypeScript?

采用您没有任何经验的新技术可能会令人生畏。但是,使用 TypeScript 是值得一试的,因为它的优点大于缺点。

如果您正在单独从事一个项目并且不打算从外部获得更多帮助,我建议您为下一个 Web 应用程序项目选择 TypeScript。尽管设置和最初几个小时的开发可能很棘手,但您很快就会爱上 TypeScript,并且永远不想回到常规的 JavaScript。最初,您编写代码的速度会较慢,但从长远来看,TypeScript 会为您节省调试和重构时间。

如果你和队友一起做一个项目,这个决定会更复杂,因为它需要团队和管理层的同意。尽管最终使用 TypeScript 会对您的团队有所帮助,但它会在短期内减慢开发速度。此外,团队需要准备好花一些时间学习 TypeScript、它的特性。在这种情况下,拥有使用 TypeScript 或其他面向对象编程语言(例如 C#)的经验丰富的队友将有助于团队顺利过渡。

如果您的团队准备牺牲短期性能损失和学习 TypeScript 的初始时间,我建议在您的项目中使用 TypeScript。你不会后悔的。

什么时候不应该在新项目中使用 TypeScript?

即使 TypeScript 通常很棒,我仍然有理由不推荐使用它。

不使用 TypeScript 的最大原因是您或您的团队必须遵守紧迫的截止日期。截止日期压力很大,不建议添加您没有使用经验的新技术。不幸的是,学习 TypeScript需要时间,而将这段时间花在其他有截止日期的项目上可能会更好。

此外,TypeScript 的配置可能具有挑战性,尤其是对于初学者而言。它可能需要安装多个 npm 库并使用捆绑器(如 webpack)。如果您不准备花时间学习所有这些新信息,请不要使用它。

还有一点需要考虑的是,使用 TypeScript 会增加开发者的入门门槛。如果项目是开源的,这可能会增加开发人员为其做出贡献的难度。

此外,对于经理和招聘人员而言,在项目中使用 TypeScript 意味着您雇用的开发人员必须具有使用 TypeScript 或其他OOP语言的经验。采用 TypeScript 提高了从事项目工作的最低工作资格,并且可以增加项目的预算,因为您需要聘请更有经验的开发人员。