我为什么对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 的原因。

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 编译器就会进行警告。他还表示重构后的应用程序将以重构前的方式工作,所以不用担心兼容方面的问题。

觉得不错,请点个在看呀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谈谈关于MVP模式中V-P交互问题

在差不多两年的时间内,我们项目组几十来号人都扑在一个项目上面。这是一个基于微软SCSF(Smart Client Software Factory)的项目,客户端是墨尔本一家事业单位。前两周,我奉命负责对某个模块进行Code Review工作&#xf…

ofdm解调算法_OFDM系统中固定频偏算法

加入固定频偏:function berMatrix freqOffsetOFDM(BPS,NS,M,SNR,ifftsize,carriers,N,ep)%标准OFDM系统input_bit_stream sign(randn(1,BPS*NS));input_bit_stream(input_bit_stream -1)0;parallel_data StoP(input_bit_stream ,M);% 串并转换%QAM调制modulated_d…

重磅!阿里开源AI核心技术,95%算法工程师受用

你是否曾有过这样的疑虑:人工智能大热,作为一名传统程序员,该如何转型或学习?网上AI教程、书籍,质量参差不齐,如何找到真正专业的资源?AI理论遍地皆是,但几乎都在纸上谈兵。我们该从…

android 换机 iphone8,最好的换机之选?iPhone8 PLUS众测体验

最好的换机之选?iPhone8 PLUS众测体验2017-11-11 14:29:0034点赞1收藏0评论文章前面说一下,自己水平有限文笔不好,没有相机,开箱图这些都是手头的iPhone6和本次众测的的产品拍摄,再加上最近白天都没空拍照,…

阿里开始招聘.NET,要求WPF!

说到WPF、上位机,很多.NET开发者可能只是听过并不了解,然而随着工业4.0的火爆大势,当下.NET开发者又多了一个高薪选型,在各大招聘网站上都能找到5年经验25k左右的岗位,强烈推荐大家关注一波。这里借用了下阿里影业对.N…

JavaWeb中的Session、SessionListener、在线人数统计

2019独角兽企业重金招聘Python工程师标准>>> JavaWeb中的Session 在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话。正在装载数据…… Session的创建(代表会话周期的开始):第一次调用reque…

全球100款大数据工具汇总(51~100款)

上篇(戳标题即可跳转):全球100款大数据工具汇总(前50款)51、Redis是一个高性能的key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串&…

Android手机投屏后没有声音,乐播投屏电视没有声音怎么办_乐播投屏电视没有声音手机有声音解决办法_3DM手游...

乐播投屏是一个非常不错的投屏软件,操作使用简单,最近不少小伙伴都在用。但是在使用乐播投屏的时候,有很多小伙伴出现了电视没有声音手机有声音的情况,这是怎么回事呢?我们一起来看看乐播投屏电视没有声音的解决办法吧…

如何容器化你的 ASP.Net Core

Docker 相比 虚拟机 具有更轻量级,更便捷的特性,为什么这么说呢?虚拟机通常打包了完整的操作系统,而容器只仅仅打包了你的应用程序,运行环境及相关依赖库,Docker 是一种开源的工具包,帮助你更加…

2018年大数据趋势

作者 | Keith D. Foote翻译 | 品觉笔记本电脑、智能手机、传感器,都为物联网带来了大量数据。这是获得竞争优势(或者保持竞争力)的重大机遇,前提是企业足够灵活,可以管理好数据并把数据变成有用的商业智能。人脑能高效…

关于商品分类 商品表和属性表的设计

以前有这样的一个需求,不考虑像京东或者淘宝这样分类下有子分类的情况,只考虑一层分类的情况下,可以随便添加分类,可以任意给商品添加属性,而不需要更 改表的结构. 于是设计了一个这样的结构,实现还是可以实现,一直在用,但是在操作上比较麻烦,大家讨论下有没有更好的方式. ----…

Redis五种数据结构

1、String这是最简单的Redis类型。如果只使用这种类型,Redis就像一个可持久化的Memcached服务器。2、ListRedis的List是基于双向链表实现的,可以支持反向查找和遍历。常用案例:聊天系统、社交网络中获取用户最新发表的帖子、简单的消息队列、…

C# NUnit的安装

前言:NUnit是什么?NUnit 是一个单元测试框架,专门针对于.NET来写的。NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等。最重要的一点是它适合于所有…

中国癌症大数据出来了!每年126万例癌症死亡本可避免

01 中国本土大样本数据:癌症真的可预防!2017年,由全国肿瘤登记中心副主任陈万青教授、美国癌症协会Farhad Islami教授牵头的生活方式和感染对中国癌症发病和死亡影响的研究,发表在Annals of Oncology上[1,2]。该研究由美国癌症研究…

android 设置folder类型,正确配置你的 Android 项目

简评:优秀的 Android 项目从配置开始。: )作者在这里介绍了一个 Android 项目应该有的配置,文中讲到的内容大家都可以运用在自己的 Android 模板项目中。gitignore当你新建 Android 项目时,默认会生成 gitignore 文件,但并没有包含…

开发物体识别桌、_【课程总结】AR系统开发“秘籍”大揭秘!

导读:AR技术飞速发展,被广泛应用于游戏、医疗、旅游、电商等行业。那么对于AR系统的整体设计和应用是如何操作的呢?商汤泰坦公开课第006期联合“SLAM技术及应用”暑期学校与研讨会共同推出“移动增强现实系统的设计与应用案例解析”&“AR…

商业项目中最受欢迎的 7 种编程语言

【导读】:Semaphore 是一个国外持续集成/持续部署方案服务商。Semaphore 称自己在过去三年对其开发者用户进行调查,调查他们在开发商业项目时一般都使用哪些语言。这些数据基于成千上万个在 Semaphore 上进行测试和部署的项目的人。所以现在这是迄今为止…

为or、in平反——or、in到底能不能利用索引?

先说一个笑话,作为开场白。俺也换换风格试一试,呵呵。 在以前,有三个书生赶考,在路上遇到了一个算命先生,于是就问算命先生:我们三个人赶考,结果如何呀?算命先生伸出来了一个手指头&…

iNeuOS 工业互联网操作系统,在核工业测控领域的成功应用

注:由于本项目涉及核工业,具体细节保密。1. 前言iNeuOS工业互联网操作系统iNeuOS,公众号:iNeuOS“iNeuOS工业互联操作系统”面向未来,公众号首秀iNeuOS工业互联网操作系统积累了10多年工业领域知识和经验&#xff0…

5 thinkpad 黑将评测_王中林院士团队黑科技:80秒,将PM 2.5降至0!把森林氧吧搬回家!...

空气负离子(NAI)被称为“空气维生素”,它们广泛用于室内空气净化,包括去除空气中的颗粒物、对挥发性有机化合物进行氧化分解和抑菌。除了从森林、瀑布和暴雨等自然来源外,目前还开发了基于电晕放电、热离子电子发射、光激发和勒纳效应的纳米空…