12つの型を&で合成する
交差型の最も基本の形です。Priced と Stocked を & でつなぐと、両方のプロパティをすべて持つ型ができます。合成後の型の値は、どちらか一方のプロパティだけでは不足でエラーになる、という「すべて必須」の性質もここで確認できます。
TypeScript
23つ以上の型を重ねて合成する
& は2つまでではなく、いくつでも連ねられます。id を持つ・作成日時を持つ、といった小さな型を部品として定義しておき、必要な組み合わせで合成するのがこの書き方の本領です。部品は他のデータ型(コメントやユーザー)の合成にもそのまま使い回せます。
TypeScript
3その場の型の式で&を使う
& は型エイリアスの定義だけでなく、関数の引数の型としてその場で書けます。「Order に メモ欄を足しただけの型」のために新しい名前を作らなくてよいのが、interface の extends にはない手軽さです。足したプロパティを ? にすれば任意項目にもできます。
TypeScript
4interface同士も&で合成できる
& がつなげるのは type エイリアスだけではなく、interface で定義した型も混ぜて合成できます。新しい interface を extends で宣言しなくても、既存の interface をその場で束ねた type を作れるので、既存コードの型を組み合わせるときに便利です。
TypeScript
5権限を段階的に合成する
実務の権限設計では「編集者は閲覧者のできることすべて + 編集」のような積み重ねが現れます。& で段階的に合成しておくと、Admin の値は Viewer のプロパティもすべて持つため、閲覧者向けの関数にそのまま渡せます。「合成した型は部品の型としても使える」ことを示す例です。
TypeScript