久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

TypeScript 干掉所有已知 Bug,?

 長(zhǎng)沙7喜 2019-10-04
家家有本難念的經(jīng),人人都有廢寢忘食力求正確的程序,。 
我的程序是用JavaScript編寫(xiě)的單頁(yè)應(yīng)用,,只使用了JQuery和JavaScript,但它是我寫(xiě)過(guò)的最搖搖欲墜的程序了,。 
而當(dāng)我切換到TypeScript后,,它幫我消滅了所有已知的bug,還防止了一切類型的錯(cuò)誤再次發(fā)生,。

找出已有的“鏈接”問(wèn)題


換成TypeScript之后的第一個(gè)好處就是,,所有方法調(diào)用參數(shù)過(guò)多或過(guò)少,,或者方法名拼錯(cuò)的地方,都能夠立即發(fā)現(xiàn)(代碼非常龐大而且沒(méi)有文檔,,編寫(xiě)者也大多沒(méi)有經(jīng)驗(yàn),,也沒(méi)有標(biāo)準(zhǔn)化編程的經(jīng)驗(yàn))。 
而讓tsc(TypeScript編譯器)強(qiáng)制編譯一切代碼,,不存在的方法就會(huì)讓編譯終止,。

字符串類型的變量


程序中有一些地方會(huì)將數(shù)值類型的變量與數(shù)字進(jìn)行比較。使用==進(jìn)行比較時(shí)沒(méi)問(wèn)題,,因?yàn)镴avaScript會(huì)嘗試將非數(shù)值的數(shù)字轉(zhuǎn)換成真正的數(shù)字,,但使用===比較時(shí)(為了安全性和性能,這樣做是必須的),,你就會(huì)發(fā)現(xiàn)‘1’ === 1會(huì)返回false,,從而導(dǎo)致大量錯(cuò)誤。 
而用明確的類型聲明所有的參數(shù)和變量(例如 : number),,就能捕獲所有此類型的錯(cuò)誤,。

利用ESLint捕獲愚蠢的錯(cuò)誤


我們使用ESLint來(lái)清理TypeScript代碼,因?yàn)門SLint會(huì)在2019年某個(gè)時(shí)候被棄用,。 
ESLint可以幫助我們捕獲可能會(huì)導(dǎo)致問(wèn)題的地方,,例如返回值沒(méi)有賦給某個(gè)變量,或者其他可能導(dǎo)致不正確的問(wèn)題,。由于我們?cè)跇?gòu)建過(guò)程中加入了ESLint,,因此每次構(gòu)建都會(huì)捕獲lint錯(cuò)誤。 
在ESLint之外,,我們還使用了Prettier來(lái)格式化代碼,,最后不花任何代價(jià)就得到了統(tǒng)一的代碼風(fēng)格。

引入類

由于我們使用編譯器來(lái)捕獲明顯的錯(cuò)誤,,用linting來(lái)捕獲新的錯(cuò)誤,,因此感覺(jué)我們可以放心地將JavaScript函數(shù)移動(dòng)到類中,從而獲得更有組織,、更標(biāo)準(zhǔn)化的TypeScript代碼,,并找出一切可以重用和統(tǒng)一的代碼。

消滅全局狀態(tài)


由于我們引入了類,,因此必須將狀態(tài)從全局作用域移動(dòng)到各個(gè)類中,。 
似乎除了明顯的方法調(diào)用錯(cuò)誤和不同數(shù)據(jù)類型的值的比較之外,糟糕的狀態(tài)管理是第二大Bug的源泉,。 
雖然在這個(gè)項(xiàng)目上,,我們沒(méi)有時(shí)間引入像redux等框架,但只要將狀態(tài)移入各個(gè)類中,就足以讓我們找出不恰當(dāng)?shù)夭倏v狀態(tài)的代碼并進(jìn)行改正了,。

可測(cè)試性
 

將一大堆意大利面式的JavaScript代碼改成獨(dú)立的類,,我們就可以針對(duì)每個(gè)類編寫(xiě)Jest測(cè)試用例,從而獲得更大的安全性,,對(duì)應(yīng)用程序進(jìn)行修改時(shí)也更有信心,。 
最終我們發(fā)現(xiàn),將老舊的JavaScript遺留應(yīng)用程序移植到TypeScript上,,無(wú)論從開(kāi)發(fā),、質(zhì)量保證還是最終用戶的角度來(lái)看,,都是一項(xiàng)非常漂亮的舉措,,因?yàn)樗氲念~外的嚴(yán)格和安全度量可以幫我們讓?xiě)?yīng)用程序更穩(wěn)定,而且我們修改代碼時(shí)不會(huì)破壞已有代碼,。 
當(dāng)然,,我并沒(méi)有將應(yīng)用程序轉(zhuǎn)成Angular,也沒(méi)有添加Redux之類的狀態(tài)管理庫(kù),,但最終,,該項(xiàng)目提前完成,沒(méi)有出現(xiàn)任何故障,,在這個(gè)過(guò)程中還解決了大量已有錯(cuò)誤,,從而證明了與其在JavaScript中逐個(gè)修改bug并膽戰(zhàn)心驚地期待一切正確,還不如將應(yīng)用程序轉(zhuǎn)成TypeScript更節(jié)省時(shí)間,。 
每個(gè)項(xiàng)目都不一樣,,但我強(qiáng)烈建議,如果你想重新組織舊應(yīng)用程序,,那么應(yīng)該考慮一下TypeScript,。
原文:https:///integerman/how-typescript-squashed-all-known-bugs-98c
本文為 CSDN 翻譯,轉(zhuǎn)載請(qǐng)注明來(lái)源出處,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多