喜欢就关注我们吧!

一名曾仅使用 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 的原因。

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

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

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

案例查看:

https://zohaib.me/leverage-union-types-in-typescript-to-avoid-invalid-state/

可尽早发现错误

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

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

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

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

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

觉得不错,请点个在看呀

我为什么对TypeScript由黑转粉?相关推荐

  1. 扫地机器人黑色耐脏吗_不黑不粉、实测问答:石头扫地机器人T7好用吗?

    前言:石头扫地机器人是小米旗下智能家居类产品中最受欢迎的一个品类,近几年来也收获了不少口碑和赞誉.作为一名伪家务爱好者,生活中其实也一直在用扫地机器人产品,但这还是第一次接触石头,而且还是石头扫地机器 ...

  2. 某华为程序员爆料:主动离职,公司竟也给n+1,到手15万,华为真良心!

    都说分手能看出一个人的人品,离职能看出一家公司的良心.由于大多数公司都追逐利益.压榨员工,因此许多人的离职经历都是不大愉快的,但也不乏例外. 一个程序员发帖表扬华为是良心公司,自己主动提出离职,竟然也 ...

  3. 用户稿件 | 好家伙,到底谁在用TBtools?

    导语 老友邵扬(与我年龄相仿,尚在海外留学)详细整理了自TBtools预印本上传(2018年)以来,引用了TBtools的文稿信息.这份资料和TBtools本身开发是类似的.一不小心,就可能是工作量大 ...

  4. .net 开源组件推荐 之 StackExchange

    原文:.net 开源组件推荐 之 StackExchange 已经两年没更新过博客了!!! StackExchange,地址:https://github.com/StackExchange,开源的这 ...

  5. 【GoLang】转载:我为什么放弃Go语言,哈哈

    我为什么放弃Go语言 作者:庄晓立(Liigo) 日期:2014年3月 原创链接:http://blog.csdn.NET/liigo/article/details/23699459 转载请注明出处 ...

  6. 心路历程(一)-自学java两个月心得

    这是我的第一条博文,在敲这些文字的时候我已经是一名大四的"老者".说自己"老者"确实如此,因为以前每当这个时候大一新学妹有上架了,哈哈,每当这个时候我们就想了很 ...

  7. iPhone 13 Pro苍岭绿真机首曝!网友:这次iPhone被渲染图坑惨了

    昨日凌晨,苹果在春季新品发布会上带来了包括iPhone SE.Mac Studio.Studio Display在内的多款新品,除了极具性价比的iPhone SE 2022款外,全新的"苍岭 ...

  8. sis 最新_《炙热的我们》火箭少女首胜,sis姐妹花遭遇惨败出局?

    炙热的我们,最新的一轮团队竞技比赛,第四场比赛火箭少女101对决盘尼西林乐队,以2.5比0.5积分取胜坐上沙发位,最终以2.5积分顺利晋级进入第五场竞技比赛,由于第三场比赛火箭少女101同师弟们R1s ...

  9. 斯诺克 Snooker

    主要装备     * 滑石粉(Chalk)     用于涂在球杆杆头以增强球杆和主球之间的摩擦.滑石粉通常被压制成正方体滑石粉块.     * 球杆(Cue)     用于击打主球的木制用具.     ...

最新文章

  1. 利用gitHook实现自动部署
  2. Windows Server 2012 R2 文件服务器配置共享
  3. 软件测试基础 - 测试覆盖率
  4. linux点阵ascii像素字体,点阵字体显示系列之一:ASCII码字库的显示 | 迟思堂工作室...
  5. 算术表达式的实现,支持加减乘除,括号运算,表达式转二叉树
  6. 最新斗鱼JS逆向分析
  7. 小程序的全栈开发新时代
  8. 人工智能进场 AR/VR何去何从?
  9. LVS负载均衡中arp_ignore和arp_annonuce参数配置
  10. delphi7中idHTTP的使用
  11. arcgis注册dsoframer.ocx等组件
  12. c语言用二维数组学生姓名,C语言实验报告合集-_人人文库网
  13. ffmpeg完全教程
  14. VirtualBox虚拟机安装MSDOS和MINIX2.0.0双系统
  15. Flutter 启动页适配
  16. C# 编辑器 Editor
  17. RN+SDK套壳轻松解决苹果审核被拒3.2.1问题、2.1大礼包问题【最新上架技术】
  18. 按键精灵---插件关于窗口的各种操作
  19. 支付宝免签,个人支付宝,自动转账,自动提现到银行卡,自动银行卡转账
  20. 基础集合论 第一章 集合与集合的运算

热门文章

  1. vb趣味编程弹球小游戏_最好玩的微信小游戏集合,总有一款是你没玩过的
  2. 升级tomcat7.0之后的问题
  3. “玩转课堂”基本构想
  4. 谈一谈synchronized关键词
  5. 2016福州大学软件工程第四次团队作业-系统设计成绩汇总
  6. 面向对象——一起来复习托付与事件!
  7. Linux中常用的操作指令(随时更新)
  8. Leetcode: Valid Parentheses
  9. Microsoft Teams:团队Owner离开公司后,我们该怎么做?
  10. diy感应usb摄像头拍照_DIY无线感应充电器