掌握 TypeScript 實用型別工具 Utility Types
在現 代 Web 應用程式的開發中,TypeScript 已經成為一個不可或缺的程式語言。在 TypeScript 中,有一組非常強大的工具稱為 Utility Types
,它可以幫助開發者輕鬆地操縱和轉換現有的型別,既可以減少重複定義類似的型別,也可以提高程式碼的可讀性。我在這篇文章中參考了 Hannah Lin 的文章,將 TypeScript 的 Utility Types 也整理為幾個類別,使讀者更容易理解和記住這些工具。
我根據 Utility Types 的功能將其分成以下幾大類:
- 屬性操作類型
- 提取和排除類型
- 函數和實例操作類型
- 字串操作類型
這篇文章將介紹一些常見的 utility types,並展示它們的用法。
屬性操作類型
Partial<T>:將屬性設置為可選
Partial<T> 允許我們將某個類型的所有屬性設定為可選。
interface User {
id: number;
name: string;
age: number;
}
type PartialUser = Partial<User>;
// Infer:
// type PartialUser = {
// id?: number;
// name?: string;
// age?: number;
// }
const updateUser: PartialUser = {
name: 'John'
};
Required<T>:將屬性設置為必需
Required<T> 將某個類型的所有屬性設定為必需。
interface User {
id?: number;
name?: string;
age?: number;
}
type RequiredUser = Required<User>;
// Infer:
// type RequiredUser = {
// id: number;
// name: string;
// age: number;
// }
const newUser: RequiredUser = {
id: 1,
name: 'Jane',
age: 30
};
Readonly<T>:將屬性設置為唯讀
Readonly<T> 可以將某個類型的所有屬性設定為唯讀,防止這些屬性被修改。
interface User {
id: number;
name: string;
age: number;
}
type ReadonlyUser = Readonly<User>;
// Infer:
// type ReadonlyUser = {
// readonly id: number;
// readonly name: string;
// readonly age: number;
// }
const readonlyUser: ReadonlyUser = {
id: 1,
name: 'Jane',
age: 30
};
// readonlyUser.id = 2; // Error: Cannot assign to 'id' because it is a read-only property.