【TypeScript入門】インターセクション型 (intersection型・交差型)を理解する

Intersection

こんにちは、フロントエンドエンジニアのまさにょんです。

今回は、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: 'マルチロックオン',
}

TypeScript書籍

参考・引用

  1. サバイバルTypeScript』: インターセクション型 (intersection type)

最近の投稿