TypeScript 的 Omit 和 Exclude:超詳細解析,新手也能一看就懂!
哈囉大家好!在 TypeScript 中,Omit 和 Exclude 都是非常有用的類型工具,它們可以幫助我們從現有的類型中移除或排除某些屬性。但常常有人搞混這兩個傢伙,不知道什麼時候該用哪個。別擔心!今天我們就用最口語、最實用的方式,帶你徹底搞懂它們的區別!
Omit:精準移除指定屬性,打造客製化類型
想像一下,你有一張包含使用者所有資訊的介面,像是姓名、年齡、地址等等。但現在你只需要使用者姓名和年齡,其他資訊都不需要。這時候,Omit 就派上用場啦!它就像一個精準的橡皮擦,可以幫助我們從現有的類型中移除指定的屬性,輕鬆打造出我們想要的客製化類型。
舉個例子:
interface User {
name: string;
age: number;
address: string;
email: string;
}
type UserWithoutAddress = Omit; // 移除 address 屬性
// UserWithoutAddress 的類型會是:
// {
// name: string;
// age: number;
// email: string;
// }
是不是很簡單?
點我解鎖秘密!
Exclude:過濾類型成員,排除特定項目
Exclude 的用法和 Omit 有點不同,它主要用於過濾類型成員,排除特定項目。 把它想像成一個篩網,只讓符合條件的成員通過。
例如,我們有一個包含多種資料類型的聯合類型,像是 string | number | boolean。但我們只想保留 string 和 number,排除 boolean。這時候,我們就可以使用 Exclude 來實現。
type Data = string | number | boolean;
type StringAndNumber = Exclude; // 排除 boolean 類型
// StringAndNumber 的類型會是:
// string | number
看到這邊,你應該對 Omit 和 Exclude 的區別有了初步的了解。簡單來說,Omit 是移除指定屬性,而 Exclude 是排除特定類型成員。
Omit vs Exclude:快速比較表格
| Omit | Exclude | |
|---|---|---|
| 用途 | 移除物件類型中的指定屬性 | 從聯合類型中排除特定成員 |
| 輸入類型 | 物件類型 | 聯合類型 |
| 範例 | Omit |
Exclude |
希望透過這個表格,你能更清楚地了解到 Omit 和 Exclude 之間的差異。