新聞中心
一名曾僅使用 JavaScript 的開(kāi)發(fā)者解釋自己為何從反對(duì) TypeScript 到轉(zhuǎn)變?yōu)?TypeScript 粉絲。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)相城,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
Chirag Swadia 自稱曾是 Anti-TypeScript 的 JavaScript 開(kāi)發(fā)者。談及反對(duì)的原因,他以前一直認(rèn)為給函數(shù)/變量添加類型以滿足 TypeScript 編譯器的要求屬于過(guò)度工程化 (Over-Engineering) 的設(shè)計(jì)。因?yàn)檫@并沒(méi)有提供任何有意義的便利之處,而且降低了開(kāi)發(fā)效率——Chirag 表示自己最初總會(huì)遇到一些難以理解的編譯錯(cuò)誤,需要花費(fèi)時(shí)間來(lái)處理。他也因此感受到了挫敗感,并開(kāi)始討厭 TypeScript。
另一方面的原因是,Chirag 難以理解 TypeScript 中像泛型這樣的高級(jí)概念。他覺(jué)得自己身處 Java 世界,每行代碼都有很強(qiáng)的類型化,讓人不知所措。在 Chirag 開(kāi)始學(xué)習(xí) TypeScript 時(shí),他甚至?xí)ε孪旅孢@種簡(jiǎn)單的代碼。
▲ TypeScript 泛型示例
因此,由于上述原因,雖然 Chirag 通過(guò)觀看教程或閱讀書籍來(lái)學(xué)習(xí) TypeScript,但從未參與過(guò)任何使用 TypeScript 編寫的企業(yè)項(xiàng)目。
變化出現(xiàn)在 Chirag 擔(dān)任新職務(wù)之后,此時(shí)項(xiàng)目的技術(shù)棧為 TypeScript,他所負(fù)責(zé)的應(yīng)用都是 TypeScript 編寫(只有遺留下來(lái)的代碼是 JavaScript 代碼),因此他不得不寫起了 TypeScript 代碼。正如 Chirag 所預(yù)料的那樣,起初這對(duì)于他來(lái)說(shuō)是一個(gè)巨大的挑戰(zhàn),他對(duì) TypeScript 的恨意也因此越來(lái)越大,但最終在幾個(gè)月后,他發(fā)現(xiàn)了 TypeScript 的好處以及其他人喜歡 TypeScript 而不是 JavaScript 的原因。
[[384920]]
Chirag 也列出了自己成為 TypeScript 粉絲的三大理由。
不可能狀態(tài)無(wú)法恢復(fù)并進(jìn)行詳盡的檢查
Chirag 表示這是他喜歡 TypeScript 的主要原因。他引用了在 React 應(yīng)用中利用 TypeScript 來(lái)避免不可能狀態(tài)的例子,此例子描述了交通信號(hào)燈系統(tǒng)處理不可能狀態(tài)的案例(點(diǎn)此查看)。
可盡早發(fā)現(xiàn)錯(cuò)誤
Chirag 表示在使用 JavaScript 時(shí),曾遇到過(guò)多次由于在前端沒(méi)有進(jìn)行類型檢查而在生產(chǎn)環(huán)境發(fā)現(xiàn) bug 的情況。這些 bug 本可以避免,并且可以在編譯時(shí)被 TypeScript 編譯器發(fā)現(xiàn),這樣可以節(jié)省研發(fā)和 QA 的工作周期。
他認(rèn)為使用 TypeScript 可以將一切都保持為最初定義的狀態(tài),如果將變量聲明為布爾型,則它將始終是布爾型,并且不會(huì)變成數(shù)字。這提升了代碼按照最初預(yù)期方式運(yùn)行的可能性。簡(jiǎn)而言之,代碼是可預(yù)測(cè)的。
具有豐富的 IDE 支持并易于重構(gòu)
Chirag 認(rèn)為,類型相關(guān)的信息可以使 IDE 更好地發(fā)揮其用處,例如獲得代碼跳轉(zhuǎn)和自動(dòng)補(bǔ)全等功能,IDE 會(huì)提供準(zhǔn)確的建議。此外,在輸入代碼時(shí)會(huì)獲得即時(shí)反饋,因?yàn)榫庉嬈鲿?huì)在錯(cuò)誤發(fā)生時(shí)立即標(biāo)記出錯(cuò)誤,包括與類型相關(guān)的錯(cuò)誤。這些功能可幫助開(kāi)發(fā)者寫出可維護(hù)的代碼,并帶來(lái)巨大的生產(chǎn)力提升。
至于重構(gòu),Chirag 舉了一個(gè)例子,比如引入一個(gè)新?tīng)顟B(tài)或者移除應(yīng)用程序正在使用的不必要狀態(tài),如果此時(shí)忘記更新部分引用,TypeScript 編譯器就會(huì)進(jìn)行警告。他還表示重構(gòu)后的應(yīng)用程序?qū)⒁灾貥?gòu)前的方式工作,所以不用擔(dān)心兼容方面的問(wèn)題。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:我為什么對(duì) TypeScript 由黑轉(zhuǎn)粉?
本文地址:https://www.oschina.net/news/131695/anti-ts-developer-became-a-ts-fan
分享名稱:我為什么對(duì)TypeScript由黑轉(zhuǎn)粉?
網(wǎng)站路徑:http://www.5511xx.com/article/dhhsphd.html


咨詢
建站咨詢
