TypeScript
のユーティリティ型であるOmit
と Pick
の違いをめっちゃ簡単に解説します。
Pick<T, K>
Pick
はその名の通り、既存の型から指定したプロパティを 選び取って(Pick) 、新しい型を作成します。
// 元となる型
interface User {
id: number;
name: string;
email: string;
age: number;
}
// User型から 'id' と 'name' を選び取って新しい型を作成
type UserSummary = Pick<User, 'id' | 'name'>;
// 結果として、この型と同じになる
// interface UserSummary {
// id: number;
// name: string;
// }
Omit<T, K>
Omit
は Pick
とは逆に、既存の型から指定したプロパティを 取り除いて(Omit) 、その残り全てを使って新しい型を作成します。
// 元となる型
interface User {
id: number;
name: string;
email: string;
age: number;
}
// User型から 'email' を取り除いて新しい型を作成
type UserForPublic = Omit<User, 'email'>;
// 結果として、この型と同じになる
// interface UserForPublic {
// id: number;
// name: string;
// age: number;
// }
まとめ
Pick
Omit
を使いこなすことによって型の定義がDRY(Don't Repeat Yourself)になり、より安全で保守性の高いコードを書くことが出来ます。
「この型とこの型ほとんど同じだけど、一部のプロパティだけ違うなー」となったらPick
Omit
を使ってみましょう。