こんにちは、フロントエンドエンジニアのまさにょんです。
今回は、TypeScriptのintersection型(交差型)について解説していきます。
インターセクション型 (intersection type)とは?
インターセクション型 (intersection type)は、指定した2つのデータの構造をすべて満たす型を作成します。
intersection は「交差点, 交差」と言う意味の英単語です。
以下の説明がわかりやすいです。
考え方はユニオン型と相対するものです。
ユニオン型がどれかを意味するならインターセクション型はどれもです。
言い換えるとオブジェクトの定義を合成させることを指します。
インターセクション型を作るためには合成したいオブジェクト同士を&で列挙します。
引用元: 『サバイバルTypeScript』: インターセクション型 (intersection type)
上記にある通り、簡単に言えば「型の合成」(Merge)とも言えます。
SampleCodeは、次のとおりです。
// [ 交差型 => intersection型 ]
type RobotamaNanoda = {
name: string;
purupuruFlag: boolean;
};
type Weapon = {
power: number;
skill: string;
};
// 1. 両方を兼ね備えた型を作成する => intersection型
type SuperRobotama = RobotamaNanoda & Weapon;
const robotama: RobotamaNanoda = {
name: 'ロボ玉',
purupuruFlag: true,
}
const machineGun: Weapon = {
power: 20000,
skill: 'マルチロックオン',
}
// 2. 2つのObjectの「key: value」(型指定)を保有するObject
const ArmedRobotama: SuperRobotama = {
name: 'ロボ玉',
purupuruFlag: false,
power: 20000,
skill: 'マルチロックオン',
}