A & B 交差型

最終更新:2026-10-22

A & B 交差型

交差型 A & B は複数の型のプロパティを 1 つに結合します。値は A と B を同時に満たさなければなりません。いくつもの小さなインターフェースを「ミックスイン式」に組み合わせるのに適しています。

グループ型の組み合わせ
種類型
strict モード不要

ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。

📝 構文

type A = { id: number };
type B = { name: string };
type AB = A & B; // id と name の両方を持つ

⚙️ パラメータ

A & B& は任意の数の型を連結します。メンバーが多いほど制約は強くなります(範囲は狭くなります)

戻り値:戻り値はありません。交差型は純粋な型レベルの概念であり、コンパイル後に消えます。

▶ サンプル

下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:

出力:

7 login 2026-01-01T09:00:00Z

(トランスパイル後の実行出力。audit に timestamp フィールドを書き忘れるとコンパイルエラーになります。交差はすべてのメンバーが揃っていることを要求するからです)

💡 ポイント

ℹ️ 説明 交差は「かつ」、ユニオンは「または」です。A & B は両方の同時成立を要求し(より狭く)、A | B はどちらか 1 つの成立で足ります(より広く)。
⚠️ 注意 プリミティブ型の交差は never になります(string & number には共通部分がありません)。同名のプロパティで型が異なる場合、そのプロパティの型は両側の交差になり、通常はこれも never です。
💡 ヒント ユーティリティ型との組み合わせは交差の得意分野です。User & Partial<User> のような「そのまま+部分的な上書き」の書き方は簡潔で直接的です。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q 交差型と interface extends の違いは何ですか?
A 効果は似ていますが仕組みが異なります。extends は interface や型の形状しか継承できず、衝突するとエラーになります。& は任意の型式(ユーティリティ型の結果を含む)を重ねられ、衝突は黙って never になります。明確なエラーが必要なら extends を使いましょう。
Q string & number とは何ですか?
A never です。文字列と数値を同時に満たす値は存在しません。プリミティブ型の交差はほとんどの場合 never になり、このことは型演算で「不可能性」を表現するのにも使えます。
Q 交差した 2 つのインターフェースの同名プロパティの型が異なる場合はどうなりますか?
A そのプロパティの型は両側の型の交差になります。string & number はすぐに never となり、その後のどんな代入もエラーになります。& でインターフェースを結合する前に、フィールドの型が一致しているか確認してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%