新聞中心
這是一個(gè) Pick 函數(shù),它的作用是挑選 keys 屬性數(shù)組中每個(gè) key 對(duì)應(yīng)的值,組成一個(gè)新的對(duì)象。

創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上千服務(wù),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)!
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 中我們操作的是對(duì)象,而在 TypeScript 中我們操作的是類型。同樣,在 TypeScript 中我們也可以把 User 類型轉(zhuǎn)換成只包含 id 和 name 屬性的 PickedUser 類型。
type User = {
id: number;
name: string;
address: string;
};
type PickedUser = {
id: number;
name: string;
};要實(shí)現(xiàn)上述的功能,我們需要使用 TypeScript 提供的映射類型。它是一種泛型類型,可用于把原有的對(duì)象類型映射成新的對(duì)象類型。
映射類型的語(yǔ)法如下:
{ [ P in K ] : T }其中 P in K 類似于 JavaScript 中的 for...in 語(yǔ)句,用于遍歷 K 類型中的所有類型,而 T 類型變量用于表示 TS 中的任意類型。了解完這些知識(shí)之后,我們來(lái)定義一個(gè) MyPick 工具類型。
type MyPick= {
[P in K]: T[P];
};
在以上代碼中,T、K 被稱為類型參數(shù),與 Pick 函數(shù)中參數(shù)的作用類似。keyof 操作符用于獲取某種類型中的所有鍵,其返回類型是聯(lián)合類型。如果 keyof 操作的是對(duì)象類型,其功能與 Object.keys 方法類似。
而 K extends keyof T 是泛型約束,用于約束類型參數(shù) K 對(duì)應(yīng)的實(shí)際類型為對(duì)象類型所有鍵組成的聯(lián)合類型的子類型。T[P] 用于獲取 T 類型中 P 屬性對(duì)應(yīng)的類型,其中類型變量 P 的值會(huì)在遍歷的過(guò)程中不斷改變。
下面我們來(lái)驗(yàn)證一下 MyPick 工具類型,是否實(shí)現(xiàn)對(duì)應(yīng)的功能。在實(shí)際工作中,若遇到對(duì)應(yīng)的場(chǎng)景,我們可以直接使用 TypeScript 提供的 Pick 工具類型。
type PickedUser = MyPick;
// type PickedUser = {
// id: number;
// name: string;
// }
在 TypeScript 中映射類型非常重要,如果你想深入學(xué)習(xí)映射類型,可以觀看 “用了 TS 映射類型,同事直呼內(nèi)行!
當(dāng)前名稱:聽(tīng)說(shuō)你熟悉Pick,那就來(lái)手寫一個(gè)MyPick!
轉(zhuǎn)載來(lái)源:http://www.5511xx.com/article/cdgsigh.html


咨詢
建站咨詢
