0Pricing
TypeScript Academy · レッスン

インターセクション型:AかつB

& で型を組み合わせ、プロパティを統合します。

「インターセクション型:AかつB」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

はじめに

交差型は複数の型を1つに組み合わせます。交差型の値は、組み合わせたすべての型を同時に満たす必要があります。

交差型の基本構文

`&` 演算子を使って交差型を作成します。結果の型には、両方の型のすべてのプロパティが含まれます。
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;
const alice: Person = { name: 'Alice', age: 30 };

すべてのプロパティが必須

交差型では、組み合わせたすべての型のすべてのプロパティが必要です。どれか1つでもプロパティが不足すると型エラーになります。
type A = { x: number };
type B = { y: number };
type AB = A & B;
// const p: AB = { x: 1 }; // Error — missing y

オブジェクト型の結合

交差型は、互いに継承関係のない2つのオブジェクト型を結合するためによく使われます。
type Serializable = { serialize(): string };
type Loggable = { log(): void };
type Service = Serializable & Loggable;

交差型と extends の比較

インターフェースの拡張と交差型は、オブジェクト型に対して似た結果になります。ただし交差型は、ユニオンやプリミティブを含む型エイリアスにも使用できます。
// Interface extend:
interface C extends A, B {}

// Intersection type:
type D = A & B;
// Both give the same shape for simple objects

型が競合する場合の交差型

交差させた2つの型に、型が競合する同じプロパティがある場合、そのプロパティの結果は `never` になります。
type X = { id: string };
type Y = { id: number };
type XY = X & Y;
// XY.id is string & number = never — impossible!

関数パラメーターの交差型

交差型を使うと、複数のインターフェース契約を満たす必要がある引数を受け取れます。
function process(item: Serializable & Loggable): void {
  item.log();
  console.log(item.serialize());
}

交差型によるMixinパターン

交差型を使うと、複数のソースの振る舞いを組み合わせるMixinパターンを実現できます。
type Timestamped<T> = T & { createdAt: Date };
type User = Timestamped<{ name: string; email: string }>;

プリミティブ型の交差は never に収束する

重なり得ないプリミティブ型を交差させると、`never` に収束します。
type T = string & number; // never — a value can't be both

交差型とユニオンの核心的な違い

ユニオン(|)は OR を意味し、値は型のいずれか1つになります。交差型(&)は AND を意味し、値はすべての型を満たす必要があります。

ジェネリクスで交差型を使う

交差型を使うと、ジェネリック型に追加のプロパティを組み合わせて、柔軟で拡張可能な型を作成できます。
type WithId<T> = T & { id: number };
const user: WithId<{ name: string }> = { id: 1, name: 'Alice' };

確認問題

`type T = string & number` は何に評価されますか。

まとめ

交差型(&)では、組み合わせたすべての型のすべてのプロパティが必要です。オブジェクトの形状の結合、Mixin の実装、ジェネリック型の組み合わせに使用します。競合するプリミティブ型の交差は never に収束します。

よくある質問

「インターセクション型:AかつB」レッスンは無料ですか?

はい。「インターセクション型:AかつB」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「インターセクション型:AかつB」で何を学びますか?

& で型を組み合わせ、プロパティを統合します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「インターセクション型:AかつB」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ユニオン型:AまたはB
  2. インターセクション型:AかつB
  3. 安全なパターンマッチングのための判別可能なユニオン
  4. ユニオンとインターセクションの実践パターン
← TypeScript Academyに戻る