前端技術(shù)優(yōu)選 6天前以下文章來(lái)源于掘金開(kāi)發(fā)者社區(qū) ,,作者前沿技術(shù)瞭望官 為什么我曾經(jīng)是 TypeScript 的黑粉,?我一直覺(jué)得給函數(shù)和變量設(shè)定類型,滿足 TypeScript 編譯器的各種檢查是一種過(guò)度的設(shè)計(jì),,并且沒(méi)有任何意義上的好處,。而且這個(gè)設(shè)計(jì)也讓我編寫(xiě)程序的速度很慢,也是因?yàn)槲医?jīng)常會(huì)遇到一些作為一名新人所難以理解的編譯錯(cuò)誤,。我撓頭三千尺,,白發(fā)飄落,試圖去找出問(wèn)題所在,,也同時(shí)增生了一絲惆悵與挫敗,。我開(kāi)始討厭 TypeScript 這門(mén)語(yǔ)言了。 另一個(gè)原因是 TypeScript 中諸如泛型之類的概念我一開(kāi)始覺(jué)得很難理解,。我開(kāi)始覺(jué)得自己又深陷 Java 世界那般的泥潭,,似乎每句代碼的輸入都是強(qiáng)類型并且令我極度厭煩的。當(dāng)我開(kāi)始學(xué)習(xí) TypeScript 時(shí),,即使像下面這樣的簡(jiǎn)單代碼也足以讓我感到恐懼,。 由于上述的原因,即使我通過(guò)觀看一些在線的教程或是嘗試去閱讀書(shū)籍來(lái)學(xué)習(xí) TypeScript,,我也從未主導(dǎo)或參與過(guò)任何使用 TypeScript 編寫(xiě)的企業(yè)應(yīng)用程序的開(kāi)發(fā)之中,。實(shí)際上,我過(guò)去常常選擇 JavaScript 而不是 TypeScript(如果可以選擇)去完成家庭作業(yè)這一公司面試過(guò)程的一部分 ??,。 但是,,當(dāng)我轉(zhuǎn)任現(xiàn)職時(shí),我失去了使用 JavaScript 的權(quán)利,!因?yàn)槲覍⒁幚淼乃袘?yīng)用程序都是用 TypeScript 編寫(xiě)的(JavaScript 部分都是些舊代碼),。我對(duì) TypeScript 的仇恨,與日俱增,!但在幾個(gè)月后,,我終于明白了為什么會(huì)有人更喜歡 TypeScript,而不是喜歡 JavaScript 的原因,,明白了使用 TypeScript 的好處和一些激勵(lì)我去嘗試使用的的理由,。這些內(nèi)容我將在下面的部分中列出: 我成為 TypeScript 粉絲的三大原因避免無(wú)效狀態(tài)的出現(xiàn) & 擁有詳盡的檢查這就是我喜歡 TypeScript 的主要原因,。如果你想了解更多這個(gè)概念的信息,我建議你看下面的視頻 —— 雖說(shuō)它說(shuō)的是 Elm 語(yǔ)言,,但該概念也適用于 TypeScript 語(yǔ)言,。 視頻地址:https:///IcgmSRJHu_8 如果你想查看一些有關(guān)如何在 React 應(yīng)用程序中利用 TypeScript 來(lái)避免程序出現(xiàn)無(wú)效狀態(tài)的示例,我建議你去閱讀一下下面的博客文章:
及早發(fā)現(xiàn)錯(cuò)誤在使用 JavaScript 時(shí),,我多次遇到過(guò)由于在前端沒(méi)有進(jìn)行類型檢查而在生產(chǎn)環(huán)境發(fā)現(xiàn) bug 的情況。這些 bug 本可以被避免,,并且可以在編譯時(shí)被 TypeScript 編譯器發(fā)現(xiàn),,這樣可以節(jié)省研發(fā)和 QA 的工作周期。 使用 TypeScript,,一切都保持最初定義的方式,。如果將變量聲明為布爾型,則它將始終是布爾型,,并且不會(huì)變成數(shù)字,。這增加了代碼按照最初預(yù)期的方式工作的可能性。簡(jiǎn)而言之,,代碼是可預(yù)測(cè)的,! 豐富的 IDE 支持 & 易于重構(gòu)集成開(kāi)發(fā)環(huán)境(IDE)讓有關(guān)類型的信息更加有用 —— 我們可以在 IDE 中使用上代碼導(dǎo)航和自動(dòng)完成等功能,并借助這些準(zhǔn)確的建議修復(fù)錯(cuò)誤,。我們還可以在輸入代碼時(shí)獲得反饋:編輯器會(huì)在錯(cuò)誤發(fā)生時(shí)立即標(biāo)記出錯(cuò)誤,,包括與類型相關(guān)的錯(cuò)誤。這些功能可幫助開(kāi)發(fā)者寫(xiě)出可維護(hù)的代碼,,并帶來(lái)巨大的生產(chǎn)力提升 ??,。 關(guān)于重構(gòu),比如引入一個(gè)新?tīng)顟B(tài)或者移除應(yīng)用程序正在使用的不需要的狀態(tài),,如果在過(guò)程中我們忘記了要去更新部分引用,,TypeScript 編譯器就會(huì)進(jìn)行警告。重構(gòu)后的應(yīng)用程序?qū)⑾裰貥?gòu)之前一樣工作,,不用擔(dān)心兼容問(wèn)題。這能讓你對(duì)重構(gòu)充滿信心,。 結(jié)論總而言之,,使用 TypeScript 有許多的好處(如果你還沒(méi)有這樣做的話),而以上的幾點(diǎn)就是我的主要?jiǎng)恿?,也是因?yàn)檫@些動(dòng)力,,我對(duì) TypeScript 黑轉(zhuǎn)粉了。 如果你是 TypeScript 的初學(xué)者或想提高你的知識(shí),,那么我可以推薦一些書(shū):
讓我們一起干杯! ?? |
|
來(lái)自: 風(fēng)聲之家 > 《JS》