携手创作,共同成长!这是我参与「掘金日新计划 · 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 最显着的优势是它的编译器,它提供了类型和错误检查。它检查类型有效性并实时显示错误。它在重构代码时特别有用,因为编译器会向您显示您可能遗漏的内容。
当与 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 需要添加大量额外的代码来定义类型。虽然确实如此,但从长远来看,这可以节省时间,因为让新项目成员入职更简单。它还使代码库的重构更容易。
什么时候应该在新项目中使用 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 提高了从事项目工作的最低工作资格,并且可以增加项目的预算,因为您需要聘请更有经验的开发人员。