TypeScript与JavaScript。你应该使用哪一个,以及为什么
2022年8月11日
分享
本文将探讨TypeScript与JavaScript:它们如何比较,以及何时使用TypeScript与JavaScript。我们将探讨TypeScript究竟是什么,它为什么存在,以及它的优势和劣势是什么。
什么是 TypeScript?
TypeScript是一种开源编程语言,由微软开发和维护。它是 JavaScript 的超集:任何 JavaScript 代码都可以在 TypeScript 环境中运行。
TypeScript 是为了解决在 JavaScript 中开发大规模应用程序时出现的问题而创建的。这些类型的应用程序包含数百个不同的文件。做一个改变会影响多个文件的行为。由于JavaScript无法验证这些文件之间的联系,开发人员有很大的空间来犯错,导致生产中的错误。这就是为什么需要像TypeScript这样的前端语言,包括静态类型检查。
TypeScript是一种编译语言,与JavaScript不同,它是一种解释语言。你需要将TypeScript编译成JavaScript,以便它在浏览器中工作。要将TypeScript编译为JavaScript,你可以使用TypeScript npm包。
如果你来自于C#或Java这样的面向对象的语言,你会发现TypeScript增加了许多熟悉的功能。我最喜欢的包括增加枚举、接口、访问修改器、命名空间、泛型等等。
由于许多外部npm库是用JavaScript编写的,TypeScript需要一种方法来对它们进行类型检查。这就是类型声明文件(.d.ts 文件)发挥作用的地方。这些类型声明提供了类型定义与代码的信息。编译器使用它们来对TypeScript的代码进行类型检查。现在,大多数JavaScript库都为它们编写了TypeScript定义。即使一个库缺乏这些定义,TypeScript有时也能推断出类型。另外,你也可以自己快速编写定义。
TypeScript非常适用于大规模网络应用,因为你可以用它来编写前端和后端代码。在后端,你需要安装一个叫做ts-node的库,以便在Node.js 环境中执行 TypeScript 代码。
TypeScript与JavaScript的优势是什么?
在2022年,TypeScript加入了世界上最常用的5种语言。这并不奇怪,因为TypeScript不断发展,增加了新的功能,并且拥有一个奇妙的开发者社区,TypeScript的团队会倾听他们的意见。
与普通的JavaScript相比,TypeScript最显著的优势是它的编译器,它提供类型和错误检查。它检查类型的有效性并实时显示错误。在重构你的代码时,它特别有用,因为编译器会显示你可能错过的东西。

当与较新的IDE(如Visual Studio Code)配对使用时,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帮助发现的错误比JavaScript多15%。
TypeScript的另一个缺点是需要额外的编译步骤。这个步骤会减慢构建时间,并使捆绑器的设置变得复杂。
由于TypeScript增加了许多新的功能,而这些功能对于前端开发者来说可能是未知的,所以它增加了代码库的学习曲线。事实上,当充分发挥其潜力时,TypeScript对未受过训练的开发人员来说是具有挑战性的,需要大量的googling或来自年长队友的指导。

最后,一些开发人员抱怨说,使用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提高了在项目中工作的最低工作资格,并且会增加项目的预算,因为你需要雇用更多有经验的开发人员。
TypeScript 与 JavaScript。遗留项目如何处理?
将用普通 JavaScript 编写的遗留项目迁移到 TypeScript,会给项目开发周期带来很多好处。它有助于发现你没有注意到的错误,并简化了项目的维护。
对于较小的项目,从JavaScript迁移到TypeScript可以通过安装所需的库,将文件扩展名从.js 改为.ts ,并修复TypeScript编译器输出的错误而轻松完成。
对于有数百个不同的JavaScript文件的项目来说,它可能会更复杂。幸运的是,你可以循序渐进地采用TypeScript。你可以优先将一些文件迁移到TypeScript,并与传统的JavaScript代码并行运行。
另一个选择是保留传统代码,只在TypeScript中编写新功能。当一个功能触及到遗留代码的一部分时,你可以在工作中同时迁移它。
TypeScript与JavaScript:结论
在这次TypeScript与JavaScript的比较中,你已经看到TypeScript是一种伟大的面向对象的语言,可以帮助你更有效地构建大规模应用程序。
尽管它有一些缺点,比如它所增加的代码复杂性或增加的编译时间,但从长远来看,它将为你节省时间。
如果你独自工作,我强烈建议你使用TypeScript构建你的下一个应用程序。
如果你与团队一起工作,采用TypeScript可能需要一些说服力。我鼓励你在空闲时间开始构建一个TypeScript项目。然后你可以向你的队友展示它,并解释 TypeScript 的所有优势。
分享这篇文章
你好👋!我是Tim Mouskhelichvili,来自加拿大蒙特利尔🇨🇦的自由开发者和顾问。我专注于React、Node.js和TypeScript应用开发。同时,我有一个博客,写关于网络技术的文章。
[

](www.sitepoint.com/premium/boo…)
[

](www.sitepoint.com/premium/boo…)
[

](www.sitepoint.com/premium/boo…)
[

](www.sitepoint.com/premium/boo…)
下一页
2022年9个最佳的JavaScript和TypeScript ORMsMichaelWanyoike
掌握Deno。一个安全的JavaScript和TypeScript运行时NilsonJacques
如何为开源TypeScript项目做贡献JoePrevite
TypeScript如何让你成为更好的JavaScript开发者JoePrevite




