自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

秒懂 TypeScript 泛型工具類型!

開發(fā) 前端
而對于 Pick 工具類型來說,type 關(guān)鍵字用于給類型取個別名,方便重復(fù)使用,Pick 就是類型的名稱。

如果你剛接觸 TypeScript 不久,在閱讀 TypeScript 內(nèi)置工具類型的用法和內(nèi)部實現(xiàn)的文章時,可能會看到 Pick 工具類型,對于該類型的語法你可能會感到陌生。

type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
type User = {
id: number;
name: string;
address: string;
};
type PickedUser = Pick<User, "id" | "name">;

其實學(xué)習(xí)新事物一種比較好的方式是使用類比。接下來阿寶哥將借助 JavaScript 中的函數(shù)來幫助你快速理解 Pick 工具類型背后的語法。

function Pick(obj, keys) {
const ret = {};
for (const key of keys) {
ret[key] = obj[key];
}
return ret;
}
const user = {
id: 666,
name: "阿寶哥",
address: "廈門",
};
const PickedUser = MyPick(user, ["id", "name"]);

在以上代碼中,function 是關(guān)鍵字用于聲明函數(shù),Pick 是函數(shù)名稱,而小括號內(nèi)的 obj 和 keys 是參數(shù),大括號中定義的是函數(shù)體。

圖片

而對于 Pick 工具類型來說,type 關(guān)鍵字用于給類型取個別名,方便重復(fù)使用,Pick 就是類型的名稱。尖括號內(nèi)的 T 和 K 屬于類型參數(shù),與 JavaScript 函數(shù)中參數(shù)的區(qū)別是類型參數(shù)存儲的是類型,而 JavaScript 函數(shù)參數(shù)存儲的是值。

圖片

?其中 extends 是泛型約束的語法,用于約束類型的范圍。 大括號中是該工具類型的具體實現(xiàn),它使用了 TypeScript 映射類型的語法。?

其實,你可以把 TypeScript 內(nèi)置的工具類型理解成特殊的函數(shù),它們被用于處理 TypeScript 中存在的類型。調(diào)用工具類型的方式與調(diào)用 JavaScript 函數(shù)的區(qū)別是使用的是尖括號。

最后,為了便于大家理解,阿寶哥以圖片的形式來演示一下 Pick 工具類型的執(zhí)行過程。

圖片

圖片

圖片

如果你想詳細(xì)了解映射類型,可以觀看 “??用了 TS 映射類型,同事直呼內(nèi)行!”?? 這篇文章。

責(zé)任編輯:姜華 來源: 全棧修仙之路
相關(guān)推薦

2024-11-05 09:11:09

TypeScript開發(fā)者代碼

2023-05-12 09:08:48

TypeScript工具類型

2021-06-17 06:51:32

Java泛型Java編程

2023-01-05 17:13:28

TypeScript泛型組件

2021-10-17 13:10:56

函數(shù)TypeScript泛型

2011-04-13 09:16:55

泛型

2024-04-23 08:23:36

TypeScript泛型Generics

2022-06-14 09:01:06

TypeScript泛型

2023-11-20 13:51:00

泛型函數(shù)TypeScript

2009-09-08 16:36:10

LINQ查詢基于泛型類

2009-08-24 14:51:25

C# 泛型泛型類型

2009-04-24 09:33:12

LINQ查詢非泛型

2024-05-29 12:53:30

2025-03-28 06:01:00

TypeScript泛型開發(fā)

2013-03-20 09:27:33

C#泛型

2018-02-07 08:32:42

2019-12-09 10:02:41

泛型ypeScript前端

2022-02-22 08:25:51

typeScript泛型概念泛型使用

2020-04-20 10:33:56

戴爾

2018-04-26 08:40:33

線性回歸算法機器學(xué)習(xí)
點贊
收藏

51CTO技術(shù)棧公眾號