溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

TypeScript中實(shí)用類型有哪些

發(fā)布時(shí)間:2022-03-29 09:19:40 來(lái)源:億速云 閱讀:137 作者:小新 欄目:web開(kāi)發(fā)

這篇文章給大家分享的是有關(guān)TypeScript中實(shí)用類型有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

實(shí)用類型

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>

OmitPick相反。 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è)诰帉懸粋€(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>

RequiredPartial相反。它構(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: "廈門",
  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")
}

感謝各位的閱讀!關(guān)于“TypeScript中實(shí)用類型有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI