[TypeScript] 任意の型から特定のプロパティを削除した型を作成する

作成日: 2021年08月20日

Utility Types の Omit<Type, Keys> を使用すると、Type で指定した型から Keys で指定したプロパティを削除することができます。下記の例では、User 型から name プロパティを削除した User2 という型を作成し、削除されているか確認するために name プロパティに値をセットしています。このコードを実行するとエラーとなります。

export class User {
  public name: string;
  public age: number;

  constructor() {
    this.name = '';
    this.age = 0;
  }
}

type User2 = Omit<User, 'name'>

const user2: User2 = {
  name: 'yamada',
}

実行結果は下記のようなエラーとなります。

error TS2322: Type '{ name: string; }' is not assignable to type 'User2'.
Object literal may only specify known properties, and 'name' does not exist in type 'User2'.

Omit<Type, Keys> のドキュメント
https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys

TypeScript