TypeScript Partial<T>ユーティリティ型の解説
Partial<T>が型のすべてのプロパティをオプショナルにする方法を学びます。構文、ユースケース、部分更新や設定オブジェクトの実践的な例を紹介します。
Object Types
詳細な説明
Partialの理解
Partial<T>はTypeScriptで最もよく使われるユーティリティ型の一つです。Tのすべてのプロパティをオプショナルに設定した型を構築し、Tの任意のサブセットを表す型を作成します。
構文
type Partial<T> = {
[P in keyof T]?: T[P];
};
基本的な例
interface User {
id: number;
name: string;
email: string;
age: number;
}
type PartialUser = Partial<User>;
// 以下と同等:
// {
// id?: number;
// name?: string;
// email?: string;
// age?: number;
// }
実践パターン: 更新関数
Partial<T>の最も一般的な使い方は、オブジェクトの一部のフィールドだけを更新するupdate関数やpatch関数です:
function updateUser(id: number, updates: Partial<User>): User {
const existing = getUserById(id);
return { ...existing, ...updates };
}
// nameとemailだけを更新 -- 他のフィールドは変更なし
updateUser(1, { name: "Alice", email: "alice@new.com" });
Deep Partial
Partial<T>はシャロー(浅い)です -- トップレベルのプロパティのみオプショナルにします。深くネストされたオブジェクトにはカスタムのDeepPartial型が必要です:
type DeepPartial<T> = {
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
};
ユースケース
Partial<T>はupdate/patchエンドポイントの構築、設定のマージ、オブジェクトのプロパティのサブセットを受け取る関数に使用します。すべてのフィールドを要求せずに特定のフィールドを更新するCRUD操作に不可欠です。