成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

減少 TS 重復代碼,Omit 用起來真香!

開發 前端
你用過 TypeScript 內置的 Omit 工具類型么?你想知道 Omit 的應用場景和內部是如何實現的么?如果想的話,閱讀完本文之后,也許你就懂了。

你用過 TypeScript 內置的 Omit 工具類型么?你想知道 Omit 的應用場景和內部是如何實現的么?如果想的話,閱讀完本文之后,也許你就懂了。這是一個使用 type 類型別名定義的 User 類型,用于描述用戶對象。

type User = {
id: string; // 用戶id
name: string; // 用戶名
password: string; // 密碼
createdAt: Date; // 創建時間
updatedAt: Date; // 更新時間
};

其中 id、createdAt 和 updatedAt 這些屬性是在創建用戶時,由服務端自動生成的。因此在注冊用戶時,用于描述注冊用戶對象的 RegisterUser 類型并不需要以上這些屬性。那么我們應該如何高效地定義 RegisterUser 類型呢?這時我們可以使用 TS 內置的 Omit 工具類型。

type RegisterUser = Omit<User, "id" | "createdAt" | "updatedAt">;
type RegisterUser = {
name: string;
password: string;
}

由以上結果可知,id、createdAt 和 updatedAt 這些屬性都已經被過濾掉了,所以使用 Omit 工具類型,我們可以很方便地過濾掉對象類型中不需要的屬性。

其實 Omit 工具類型還有其它的作用,比如我們可以利用接口繼承的方式來實現覆蓋已有對象類型中已知屬性的類型。具體的實現方式也很簡單:

interface UserUI extends Omit<User, "createdAt" | "updatedAt"> {
createdAt: string;
updatedAt: string;
}

在以上代碼中,UserUI 接口描述的對象用于在頁面上顯示用戶信息,所以我們把原有 User 類型中 createdAt 和 updatedAt 屬性的類型都修改成 string 類型。

了解完 Omit 工具類型的應用場景,下面我們來看一下它內部是如何實現的。

// typescript/lib/lib.es5.d.ts
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

由以上代碼可知,Omit 工具類型內部使用了 TS 內置的 Pick 和 Exclude 工具類型。

其中 keyof 操作符用于獲取某種類型中的所有鍵,其返回類型是聯合類型。而 Exclude 工具類型用于實現類型過濾,即從 keyof T 返回的聯合類型中,過濾掉要排除的屬性。最終再使用 Pick 工具類型從原有的對象類型中,挑選出需保留的屬性,組合成新的對象類型。

責任編輯:姜華 來源: 全棧修仙之路
相關推薦

2021-06-30 09:20:18

NuShell工具Linux

2021-03-10 09:54:43

RustNuShell系統

2024-05-21 10:28:51

API設計架構

2023-02-07 06:55:26

Kafka消費消息

2009-07-22 07:45:00

Scala代碼重復

2021-10-29 11:25:41

代碼編程語言Java

2024-07-04 11:33:33

2012-07-11 09:34:39

微軟云計算

2022-05-09 22:53:02

數組類型TS

2021-09-18 08:52:45

人工智能

2012-12-17 09:54:08

2016-06-12 09:28:46

Ubuntu 16.0升級Linux

2021-01-29 17:40:00

Flyme安卓手機安全

2020-01-06 15:00:43

Linux電腦發行版

2021-09-29 07:13:12

編程 Python Merge

2021-04-18 07:18:31

Chrome

2022-12-27 17:56:40

ack機制RocketMQ

2020-07-06 15:13:16

安卓AirDrop無線傳輸

2021-07-12 07:33:31

Nacos微服務管理

2015-05-28 10:35:07

前端gulpdemo
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩成人一区二区 | 蜜桃特黄a∨片免费观看 | 第一av| 一区二区三区成人 | 91精品国产麻豆 | 国产精品高潮呻吟久久久久 | 波多野结衣二区 | 国产成人免费视频 | 国产精品久久久久久久三级 | 欧洲一级黄 | 91精品久久久久久久久久 | 日本超碰 | 一级片免费视频 | 九九99久久 | 少妇一级淫片免费播放 | 91精品久久久久久久久中文字幕 | 毛片a级毛片免费播放100 | www.com久久久 | 日韩无| 精品影院 | 亚洲精品一区在线观看 | 黄网站在线播放 | 亚洲国产欧美一区二区三区久久 | 久久久国产一区二区三区 | caoporn视频| 国产精品美女久久久久久免费 | 99精品一级欧美片免费播放 | 国产一区二区精品在线 | 国产99久久精品一区二区永久免费 | 亚洲字幕在线观看 | 欧美成人精品一区二区男人看 | 午夜三级在线观看 | 久久久青草婷婷精品综合日韩 | 91精品国产99 | 日韩在线精品视频 | 九九亚洲精品 | 黄a免费网络 | 亚洲国产一区二区视频 | 91免费版在线观看 | 91偷拍精品一区二区三区 | 久久久久免费观看 |