您好,登錄后才能下訂單哦!
小編給大家分享一下TypeScript中值得了解的方法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
TypeScript 中的類型系統(tǒng)是非常強(qiáng)大的。它為我們提供了類型安全。類型系統(tǒng)雖然受人喜愛(ài),但如果我們不規(guī)劃和設(shè)計(jì)類型和接口,它也會(huì)讓我們的代碼變得混亂難讀。
避免代碼重復(fù)中,創(chuàng)建可重用的類型,是我們編寫(xiě)簡(jiǎn)潔代碼重要的一環(huán)。泛型是 TypeScript 的一個(gè)功能,它允許我們編寫(xiě)可重用的類型??聪旅娴睦樱?/p>
type Add<T> = (a: T, b: T) => T const addNumbers: Add<number> = (a, b) => { return a + b } const addStrings: Add<string> = (a, b) => { return a + b }
將正確的類型放入Add
的泛型中,它可以被用來(lái)描述兩個(gè)數(shù)字的相加或兩個(gè)字符串的連接。我們不需要為每個(gè)函數(shù)寫(xiě)一個(gè)類型,而只需要用泛型做一次。這不僅節(jié)省了我們的精力,而且還使我們的代碼更加簡(jiǎn)潔,更不容易出錯(cuò)。
TypeScript 原生提供了幾個(gè)有用的實(shí)用類型來(lái)幫助我們進(jìn)行一些常見(jiàn)的類型轉(zhuǎn)換。這些實(shí)用類型是全局可用的,它們都使用了泛型。
下面這7個(gè)是我經(jīng)常用到的。
1. Pick<Type, Keys>
Pick
會(huì)從 Type 中挑選屬性集 Keys 來(lái)創(chuàng)建一個(gè)新的類型,Keys 可以是一個(gè)字符串字面或字符串字面的聯(lián)合。Keys 的值必須是 Type 的鍵,否則TypeScript編譯器會(huì)抱怨。當(dāng)你想通過(guò)從有很多屬性的對(duì)象中挑選某些屬性來(lái)創(chuàng)建更輕的對(duì)象時(shí),這個(gè)實(shí)用類型特別有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Pick<User, "name" | "age"> // type BasicUser = { // name: string; // age: number; // }
2. Omit<Type, Keys>
Omit
與Pick
相反。 Keys
不是說(shuō)要保留哪些屬性,而是指要省略的屬性鍵集。 當(dāng)我們只想從對(duì)象中刪除某些屬性并保留其他屬性時(shí),這個(gè)會(huì)更有用。
type User = { name: string age: number address: string occupation: string } type BasicUser = Omit<User, "address" | "occupation"> // type BasicUser = { // name: string; // age: number; // }
3. Partial<Type>
Partial
構(gòu)造了一個(gè)類型,其所有的類型屬性都設(shè)置為可選。當(dāng)我們?cè)诰帉?xiě)一個(gè)對(duì)象的更新邏輯時(shí),這個(gè)可能非常有用。
type User = { name: string age: number address: string occupation: string } type PartialUser = Partial<User> // type PartialUser = { // name?: string; // age?: number; // address?: string; // occupation?: string; // }
4. Required<Type>
Required
與Partial
相反。它構(gòu)造了一個(gè)類型的所有屬性都是必填的類型。它可以被用來(lái)確保在一個(gè)類型中沒(méi)有可選屬性出現(xiàn)。
type PartialUser = { name: string age: number address?: string occupation?: string } type User = Required<PartialUser> // type User = { // name: string; // age: number; // address: string; // occupation: string; // }
5. Readonly<Type>
Readonly
構(gòu)建了一個(gè)類型,其類型的所有屬性被設(shè)置為只讀。重新分配新的值 TS 就會(huì)報(bào)錯(cuò)。
type User = { name: string age: number address: string occupation: string } type ReadOnlyUser = Readonly<User> const user: ReadOnlyUser = { name: "小智", age: 24, address: "廈門(mén)", occupation: "大遷世界" } user.name = "王大冶" // Cannot assign to 'name' because it is a read-only property.
6. ReturnType<Type>
ReturnType
從一個(gè)函數(shù)類型的返回類型構(gòu)建一個(gè)類型。當(dāng)我們處理來(lái)自外部庫(kù)的函數(shù)類型并希望基于它們建立自定義類型時(shí),它是非常有用的。
import axios from 'axios' type Response = ReturnType<typeof axios> function callAPI(): Response{ return axios("url") }
除了上面提到的,還有其他實(shí)用類型可以幫助我們編寫(xiě)更干凈代碼。關(guān)于實(shí)用工具類型的TypeScript文檔鏈接可以在這里找到。
以上是“TypeScript中值得了解的方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。