Meaningless Notebook

我輩は雑記帖である。名はまだない。


こいつ、いつも知らんかった言ってるな。

ちょ-便利じゃん !

引数型 T から、指定されたプロパティキ-を取り除く Utility 型。

知らんかった…

具体的には…

type User = {
  surname: string;
  middleName?: string;
  givenName: string;
  age: number;
  address?: string;
  nationality: string;
  createdAt: string;
  updatedAt: string;
};

type Person = Omit<User, "createdAt", "updatedAt">;

ってやると Person の型定義は…

type Person = {
  surname: string;
  middleName?: string;
  givenName: string;
  age: number;
  address?: string;
  nationality: string;
};

っていう感じになる。

ちょ-便利って感じるのはライブラリが提供している型から必須プロパティを取り除く、又はオプショナルプロパティにしたい時。

type HogeFugaLib = {
    id: string;
    name: string;
}

type HogeFugaLibWrapper = OMIT<HogeFugaLib, "name"> & {
    name?: string;
}

こうするとラッピングした関数とかでデフォルト値を与えておいて、必要なら呼び出し元で与えた値にすることも出来るようになる。

知らずに愚直にやってたのが以下 _(:3 」∠ )_

type HogeFugaLib = {
    id: string;
    name: string;
}

type HogeFugaLibWrapper = {
    id: string;
    name?: string;
}

プロパティの数が少なければいいんだけど、ライブラリ系ってすごい数だったりバ-ジョンアップとかで対応箇所が増えるから無い。

無知は罪。

参考元