我为什么对 TypeScript 由黑转粉?

开发 前端
一名曾仅使用 JavaScript 的开发者解释自己为何从反对 TypeScript 到转变为 TypeScript 粉丝。

一名曾仅使用 JavaScript 的开发者解释自己为何从反对 TypeScript 到转变为 TypeScript 粉丝。

Chirag Swadia 自称曾是 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 的原因。

[[384920]]

Chirag 也列出了自己成为 TypeScript 粉丝的三大理由。

不可能状态无法恢复并进行详尽的检查

Chirag 表示这是他喜欢 TypeScript 的主要原因。他引用了在 React 应用中利用 TypeScript 来避免不可能状态的例子,此例子描述了交通信号灯系统处理不可能状态的案例(点此查看)。

可尽早发现错误

Chirag 表示在使用 JavaScript 时,曾遇到过多次由于在前端没有进行类型检查而在生产环境发现 bug 的情况。这些 bug 本可以避免,并且可以在编译时被 TypeScript 编译器发现,这样可以节省研发和 QA 的工作周期。

他认为使用 TypeScript 可以将一切都保持为最初定义的状态,如果将变量声明为布尔型,则它将始终是布尔型,并且不会变成数字。这提升了代码按照最初预期方式运行的可能性。简而言之,代码是可预测的。

具有丰富的 IDE 支持并易于重构

Chirag 认为,类型相关的信息可以使 IDE 更好地发挥其用处,例如获得代码跳转和自动补全等功能,IDE 会提供准确的建议。此外,在输入代码时会获得即时反馈,因为编辑器会在错误发生时立即标记出错误,包括与类型相关的错误。这些功能可帮助开发者写出可维护的代码,并带来巨大的生产力提升。

至于重构,Chirag 举了一个例子,比如引入一个新状态或者移除应用程序正在使用的不必要状态,如果此时忘记更新部分引用,TypeScript 编译器就会进行警告。他还表示重构后的应用程序将以重构前的方式工作,所以不用担心兼容方面的问题。

本文转自OSCHINA

本文标题:我为什么对 TypeScript 由黑转粉?

本文地址:https://www.oschina.net/news/131695/anti-ts-developer-became-a-ts-fan

责任编辑:未丽燕 来源: 开源中国
相关推荐

2017-05-15 16:12:55

后端编程GUI

2023-01-10 08:17:41

WebAPI框架

2015-04-16 16:35:47

2012-02-28 09:11:51

语言Lua

2020-07-17 14:06:36

Scrum敏捷团队

2012-04-04 22:07:12

Android

2022-03-14 08:33:09

TypeScriptJavaScript前端

2023-11-30 09:00:00

TypeScript开发

2014-01-09 09:24:40

2013-10-22 15:18:19

2012-11-14 20:55:07

容错服务器选型CIO

2014-01-17 14:39:18

12306 抢票

2019-09-17 15:30:13

Java编程语言

2015-03-02 15:13:52

Apple Watch

2012-06-18 14:51:09

Python

2014-09-22 10:06:07

2015-06-04 11:22:22

前端程序员

2023-07-23 17:19:34

人工智能系统

2021-08-14 09:04:58

TypeScriptJavaScript开发

2022-03-03 23:30:27

TypeScrip开发前端
点赞
收藏

51CTO技术栈公众号