メインコンテンツまでスキップ

Omit<T, Keys>

Omit<T, Keys>は、オブジェクトの型TからKeysで指定したプロパティを除いたobject型を返すユーティリティ型です。

Omit<T, Keys>の型引数

T

型引数Tにはオブジェクトの型を渡します。

Keys

Keysには引数Tのプロパティキーを指定します。ここで指定したプロパティキーと一致するプロパティをTから除去します。

Omitの使用例

ts
type User = {
surname: string;
middleName?: string;
givenName: string;
age: number;
address?: string;
nationality: string;
createdAt: string;
updatedAt: string;
};
type Optional = "age" | "address" | "nationality" | "createdAt" | "updatedAt";
type Person = Omit<User, Optional>;
ts
type User = {
surname: string;
middleName?: string;
givenName: string;
age: number;
address?: string;
nationality: string;
createdAt: string;
updatedAt: string;
};
type Optional = "age" | "address" | "nationality" | "createdAt" | "updatedAt";
type Person = Omit<User, Optional>;

上のPerson型は次の型と同じになります。

ts
type Person = {
surname: string;
middleName?: string;
givenName: string;
};
ts
type Person = {
surname: string;
middleName?: string;
givenName: string;
};

Omitの注意点

Omit<T, Keys>KeysTには無いプロパティキーを指定しても、TypeScriptコンパイラーは指摘しません。たとえば、Keysにタイポがあっても検出できないので注意が必要です。

ts
type User = {
surname: string;
middleName?: string;
givenName: string;
age: number;
address?: string;
nationality: string;
createdAt: string;
updatedAt: string;
};
type Optional = "createdat" | "updatedat" | "age" | "address" | "nationality";
type Person = Omit<User, Optional>;
// このPersonは下の型になる
type Person = { surname: string; middleName?: string | undefined; givenName: string; createdAt: string; updatedAt: string; }
ts
type User = {
surname: string;
middleName?: string;
givenName: string;
age: number;
address?: string;
nationality: string;
createdAt: string;
updatedAt: string;
};
type Optional = "createdat" | "updatedat" | "age" | "address" | "nationality";
type Person = Omit<User, Optional>;
// このPersonは下の型になる
type Person = { surname: string; middleName?: string | undefined; givenName: string; createdAt: string; updatedAt: string; }

UsercreatedAt,、updatedAtAtは大文字から始まりますが、これに気づかずに小文字で書いてしまったため、Omitの結果はcreatedAtupdatedAtを含んでしまいます。

関連情報

📄️ Pick<T, Keys>

任意のプロパティだけを持つオブジェクト型を作る