争论不休:为什么要使用Typescript?
当我遇到一个强烈反对Typescript的人或一篇文章时,我总是很不高兴。我觉得非常难以理解,为什么一个在多个开发者共享的大型应用程序中发挥了巨大作用的工具会被如此厌恶......
然而,有无数的文章在反驳Typescript的有用性,拒绝承认它的好处,也拒绝承认Typescript强制执行的限制和自动自我记录所带来的省时效果。这些限制和工具增强了你的代码库,使其他开发者容易做出贡献。
有效使用Typescript的结果是,代码是:
-
更易于管理和阅读
通过良好的设置,Typescript确保代码意图变得明确。看一下代码,你会立即明白它的意图是什么。一开始肯定容易出错。但是,就像你学过的其他编码语言一样,你只需要通过犯错、改正错误,然后再试一次,就能变得更好。
新手Typescript开发者犯的一个错误是试图给所有东西都添加类型。Typescript的推理能力非常强。如果你不试图强迫它,你往往会发现Typescript被动地提供了类型,而你也得到了好处。
-
更容易理解
这一点和上一点很像,但重要的是,你会发现,随着Typescript对你所犯的小错误的提示,你会逐渐继续自动提高你的代码质量。事实上,我认为,当你推过Typescript的第一个阶段时,你会开始真正理解你的Javascript代码的引擎盖下发生了什么。你会更清楚地了解你的代码是如何工作的。
-
更好地被IDE支持
Visual Studio、VS Code和Rider等IDE都能很好地使用Typescript。在一个规模较大的Javascript代码库中,使用重构和开发者便利工具可能会很困难。如果你只是安装了Typescript,设置了tsconfig.json,并将扩展名改为.ts,Typescript会先为你的Javascript打字问题而烦恼,一旦你解决了这些问题,你会发现你的IDE神奇地比以前更了解你的项目。
-
更少的错误没有一种编程语言可以让我们写的代码没有错误、意外或错误的可能性。然而,Typescript增加了一层安全性,可以帮助防止许多错误。
-
更多可转移性
虽然有很多因素使你的代码可以在项目之间重复使用和转移,但能够将你的强类型代码放入一个库中,将使它在具有我们都喜欢的可转移性的同时具有自我文档化,这将使你在未来很多年里可以轻松地在其他项目中使用它,而不必试图将你的所有代码记下来。JSDoc仍然是有帮助的,但是确切地知道你的包在函数调用中期望什么类型的数据将是对一个包的多次重复使用的一个很大的时间节省。
💡注意:可移植性是一个开源的工具链,如 比特这样的开源工具链可以帮助实现。通过Bit,你可以在你的代码库中识别和隔离组件,将它们定义为独立的实体,可以单独开发和测试,然后通过一个中央注册表进行版本管理、记录和共享。了解更多这里.
反对Typescript的论点:
-
使得代码更难阅读
是的,当你错误地使用Typescript或者还不了解它时,这绝对是一个问题。然而,这并不是Typescript独有的问题。你可以在Javascript中犯几乎同样多的错误,使你的代码难得可笑地难以阅读。要学会有效地使用这个工具需要一点时间和精力,然后它就会增加可读性--特别是在一个较大的代码库中。
-
让代码更难写
最初,当你学习Typescript时,对大多数开发者来说,这当然是真的。它就像一开始的Javascript一样容易学习。事实上,你抓紧时间先学习Javascript,有时间通过灵活的Javascript语言吸收和学习编程的基础知识。当你的代码库足够大时,Typescript可以提升一个层次,而且通常非常值得。 -
我不能在Typescript中做和Javascript中一样的事情
这是设计上的问题。Typescript努力跟踪代码中的数据类型,以帮助你避免意外的错误--或者说是故意的错误逻辑,否则可能会导致很难跟踪的错误。 -
Typescript很难学习
对于一些人来说,学习驾驶汽车很困难,或者骑自行车也很困难。是的,它可能是困难的,但这是值得努力的。它的好处远远超过了努力,我指的不仅仅是你代码中的好处。知道如何有效地使用Typescript可以直接影响你的市场能力和工资范围。 -
当我可以直接使用Javascript时,实施Typescript是一个很大的额外工作。
如果你的代码库真的很小,你没有错。我不会在这里争论。但现实是,当你在一个项目中的代码超过了几个文件,而且你和一个不止一个人的团队一起工作时,Typescript是一项投资,随着时间的推移,它将带来巨大的回报。
我还认为,当你对Typescript有足够的了解时,在单独的项目中使用它也会为你节省大量的时间。我当然这么认为。