Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

TypeScript学習日記 その0006 オブジェクトの型を複数定義して|で合わせたり&で合わせたりしてみる(union型とintersection型)

オブジェクトの型を定義する

以下のように定義しました。

    type MyObjA = { a1: string; a2: string }
    type MyObjB = { b1: string; b2: string }
    type MyObjC = { c1: string; c2: string }
    type MyObjUnion = MyObjA | MyObjB | MyObjC
    type MyObjAnd = MyObjA & MyObjB & MyObjC

定義したMyObjUnion型を使ってみる

以下のようにすると、エラーになりました。

    const myObj1: MyObjUnion = {
      a1: 'str',
      b1: 'str',
      c1: 'str',
    }

以下のようにすると、OKになりました。

    const myObj1: MyObjUnion = {
      a1: 'str',
      a2: 'str',
      b1: 'str',
      c1: 'str',
    }

MyObjUnion型を構成する3つの型のうち1つ以上を満たすと、残る2つの型に含まれるキーはあっても無くても良いみたいです。

定義したMyObjAnd型を使ってみる

以下のようにすると、エラーになりました。

    const myObj2: MyObjAnd = {
      a1: 'str',
      a2: 'str',
      b1: 'str',
      c1: 'str',
    }

MyObjAnd型を構成する3つの型に含まれるキー全てを満たす必要があるみたいです。

これについて調べてみる

以下のような記事が出てきました。

union型(合併型)とintersection型(交差型)についても調べてみると良いかもしれません。