typescript泛型的用途 隨著JavaScript越來(lái)越完善,還有必要學(xué)習(xí)TypeScript嗎?
隨著JavaScript越來(lái)越完善,還有必要學(xué)習(xí)TypeScript嗎?如果你是一個(gè)前端開(kāi)發(fā)人員,學(xué)習(xí)是必要的。首先,作為一個(gè)開(kāi)發(fā)人員,只要與自己的工作相關(guān),出現(xiàn)任何先進(jìn)的工具、語(yǔ)言或技術(shù),都應(yīng)該及時(shí)
隨著JavaScript越來(lái)越完善,還有必要學(xué)習(xí)TypeScript嗎?
如果你是一個(gè)前端開(kāi)發(fā)人員,學(xué)習(xí)是必要的。
首先,作為一個(gè)開(kāi)發(fā)人員,只要與自己的工作相關(guān),出現(xiàn)任何先進(jìn)的工具、語(yǔ)言或技術(shù),都應(yīng)該及時(shí)關(guān)注,并花時(shí)間在演示中學(xué)習(xí)和使用。然后你就會(huì)知道為什么會(huì)出現(xiàn)新技術(shù),以及需要解決哪些問(wèn)題。無(wú)論它們是否在當(dāng)前項(xiàng)目中使用,您都應(yīng)該了解它們。
Typescript(TS)是JavaScript(JS)的超集。它有更多的語(yǔ)法特性。它擁有JS的所有特性。它還可能具有JS不具備或?qū)?lái)將具備的特性。TS與JS完全兼容,兩者可以一起使用。TS最終將被編譯成簡(jiǎn)明標(biāo)準(zhǔn)的JS代碼。
1. Type annotation
可以將一個(gè)類型聲明為一個(gè)變量,編譯成JS時(shí)靜態(tài)檢查;編輯器的智能提示,在編寫代碼時(shí),編輯器會(huì)直接提示變量、類、方法(參數(shù))、關(guān)鍵字等供您選擇,減少編寫錯(cuò)誤,大大提高開(kāi)發(fā)效率。
2. 面向?qū)ο蠊δ?/p>
支持類、接口和模塊。模塊化開(kāi)發(fā)更容易打包,設(shè)計(jì)和構(gòu)建具有復(fù)雜業(yè)務(wù)的大型系統(tǒng)也更方便。
3. Typescript是開(kāi)源的,并得到了微軟和谷歌等大公司的支持。它被廣泛使用。Vs代碼是用TS開(kāi)發(fā)的,流行的框架如angularjs和ionic也使用TS作為開(kāi)發(fā)語(yǔ)言。在未來(lái),更多的項(xiàng)目將使用它。
在未來(lái),web應(yīng)用程序?qū)⒆兊迷絹?lái)越復(fù)雜。讓我們學(xué)習(xí)
項(xiàng)目類型怎么填寫?
如果您是前端項(xiàng)目,一般來(lái)說(shuō),前端項(xiàng)目編寫類型聲明文件包含以下內(nèi)容:編輯器自動(dòng)完成,通過(guò)類型聲明,編輯器在編寫代碼時(shí)可以提供友好的代碼提示和自動(dòng)完成靜態(tài)檢查,并使用typescript提供的TSC編譯ts或JS文件來(lái)實(shí)現(xiàn)靜態(tài)類型檢查,當(dāng)您使用vscode編輯器時(shí),也會(huì)實(shí)時(shí)進(jìn)行檢查。如果有錯(cuò)誤,我們可以立即得到反饋。類型是文檔。定義類型時(shí),它相當(dāng)于編寫文檔。通過(guò)將鼠標(biāo)放在方法或參數(shù)上,可以了解具體的需求。一些NPM包有自己的類型定義。一些NPM包有自己的類型聲明包.json當(dāng)導(dǎo)入這些模塊時(shí),TSC可以自動(dòng)識(shí)別它們,vscode也可以自動(dòng)提示語(yǔ)法NPM包沒(méi)有隨附。但是,definitelytyped提供的一些NPM包沒(méi)有類型聲明,但是definitelytyped項(xiàng)目為這個(gè)NPM包提供了類型聲明。你可以npminstall@類型/*安裝相應(yīng)的類型聲明。NPM包不附帶Nitelytyped也不提供這種情況,這種情況在少數(shù)包或公司和團(tuán)隊(duì)中的包中很常見(jiàn)。此時(shí),我們需要自己添加它們。我們可以創(chuàng)建一個(gè)新的類型目錄,然后將此目錄配置為tsconfig.json文件在中的typeroots選項(xiàng)中,typescript將自動(dòng)識(shí)別此目錄中的所有文件。例如,我們希望向包foo Declare添加一個(gè)類型,以創(chuàng)建一個(gè)新的文件foo。在types目錄中。這可能是因?yàn)楫?dāng)這兩個(gè)函數(shù)被編譯成JavaScript時(shí),它們的簽名是完全相同的。因?yàn)镴avaScript沒(méi)有類型,所以會(huì)創(chuàng)建兩個(gè)參數(shù)數(shù)目相同的函數(shù)。因此,typescript限制了我們創(chuàng)建這樣一個(gè)函數(shù)的能力。
Typescript支持基于參數(shù)數(shù)量的重載,但如果我們將其與OO進(jìn)行比較,則要遵循的步驟略有不同。
我們應(yīng)該只創(chuàng)建一個(gè)函數(shù)和一些聲明,這樣typescript就不會(huì)編譯錯(cuò)誤。當(dāng)這個(gè)代碼被編譯成JavaScript時(shí),只會(huì)看到特定的函數(shù)。因?yàn)镴avaScript函數(shù)可以通過(guò)傳遞多個(gè)參數(shù)來(lái)調(diào)用,所以它可以工作。