来源
开源中国
文
局长
一名曾仅使用JavaScript的开发者解释自己为何从反对TypeScript到转变为TypeScript粉丝。
ChiragSwadia自称曾是Anti-TypeScript的JavaScript开发者。谈及反对的原因,他以前一直认为给函数/变量添加类型以满足TypeScript编译器的要求属于过度工程化(Over-Engineering)的设计。因为这并没有提供任何有意义的便利之处,而且降低了开发效率——Chirag表示自己最初总会遇到一些难以理解的编译错误,需要花费时间来处理。他也因此感受到了挫败感,并开始讨厌TypeScript。
另一方面的原因是,Chirag难以理解TypeScript中像泛型这样的高级概念。他觉得自己身处Java世界,每行代码都有很强的类型化,让人不知所措。在Chirag开始学习TypeScript时,他甚至会害怕下面这种简单的代码。
▲TypeScript泛型示例因此,由于上述原因,虽然Chirag通过观看教程或阅读书籍来学习TypeScript,但从未参与过任何使用TypeScript编写的企业项目。
变化出现在Chirag担任新职务之后,此时项目的技术栈为TypeScript,他所负责的应用都是TypeScript编写(只有遗留下来的代码是JavaScript代码),因此他不得不写起了TypeScript代码。正如Chirag所预料的那样,起初这对于他来说是一个巨大的挑战,他对TypeScript的恨意也因此越来越大,但最终在几个月后,他发现了TypeScript的好处以及其他人喜欢TypeScript而不是JavaScript的原因。
Chirag也列出了自己成为TypeScript粉丝的三大理由。
不可能状态无法恢复并进行详尽的检查
Chirag表示这是他喜欢TypeScript的主要原因。他引用了在React应用中利用TypeScript来避免不可能状态的例子,此例子描述了交通信号灯系统处理不可能状态的案例(点此查看)。
可尽早发现错误
Chirag表示在使用JavaScript时,曾遇到过多次由于在前端没有进行类型检查而在生产环境发现bug的情况。这些bug本可以避免,并且可以在编译时被TypeScript编译器发现,这样可以节省研发和QA的工作周期。
他认为使用TypeScript可以将一切都保持为最初定义的状态,如果将变量声明为布尔型,则它将始终是布尔型,并且不会变成数字。这提升了代码按照最初预期方式运行的可能性。简而言之,代码是可预测的。
具有丰富的IDE支持并易于重构
Chirag认为,类型相关的信息可以使IDE更好地发挥其用处,例如获得代码跳转和自动补全等功能,IDE会提供准确的建议。此外,在输入代码时会获得即时反馈,因为编辑器会在错误发生时立即标记出错误,包括与类型相关的错误。这些功能可帮助开发者写出可维护的代码,并带来巨大的生产力提升。
至于重构,Chirag举了一个例子,比如引入一个新状态或者移除应用程序正在使用的不必要状态,如果此时忘记更新部分引用,TypeScript编译器就会进行警告。他还表示重构后的应用程序将以重构前的方式工作,所以不用担心兼容方面的问题。