日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
聽說你熟悉Pick,那就來手寫一個MyPick!

這是一個 Pick 函數(shù),它的作用是挑選 keys 屬性數(shù)組中每個 key 對應的值,組成一個新的對象。

創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設計,成都網(wǎng)站建設、網(wǎng)站建設,網(wǎng)站設計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務,680元做網(wǎng)站,已為上千服務,創(chuàng)新互聯(lián)公司網(wǎng)站建設將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設、網(wǎng)絡營銷推廣服務!

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"]);

在 JavaScript 中我們操作的是對象,而在 TypeScript 中我們操作的是類型。同樣,在 TypeScript 中我們也可以把 User 類型轉換成只包含 id 和 name 屬性的 PickedUser 類型。

type User = {
id: number;
name: string;
address: string;
};

type PickedUser = {
id: number;
name: string;
};

要實現(xiàn)上述的功能,我們需要使用 TypeScript 提供的映射類型。它是一種泛型類型,可用于把原有的對象類型映射成新的對象類型。

映射類型的語法如下:

{ [ P in K ] : T }

其中 P in K 類似于 JavaScript 中的 for...in 語句,用于遍歷 K 類型中的所有類型,而 T 類型變量用于表示 TS 中的任意類型。了解完這些知識之后,我們來定義一個 MyPick 工具類型。

type MyPick = {
[P in K]: T[P];
};

在以上代碼中,T、K 被稱為類型參數(shù),與 Pick 函數(shù)中參數(shù)的作用類似。keyof 操作符用于獲取某種類型中的所有鍵,其返回類型是聯(lián)合類型。如果 keyof 操作的是對象類型,其功能與 Object.keys 方法類似。

而 K extends keyof T 是泛型約束,用于約束類型參數(shù) K 對應的實際類型為對象類型所有鍵組成的聯(lián)合類型的子類型。T[P] 用于獲取 T 類型中 P 屬性對應的類型,其中類型變量 P 的值會在遍歷的過程中不斷改變。

下面我們來驗證一下 MyPick 工具類型,是否實現(xiàn)對應的功能。在實際工作中,若遇到對應的場景,我們可以直接使用 TypeScript 提供的 Pick 工具類型。

type PickedUser = MyPick;

// type PickedUser = {
// id: number;
// name: string;
// }

在 TypeScript 中映射類型非常重要,如果你想深入學習映射類型,可以觀看 “用了 TS 映射類型,同事直呼內(nèi)行!


文章題目:聽說你熟悉Pick,那就來手寫一個MyPick!
URL地址:http://www.dlmjj.cn/article/cdgsigh.html