IT用語集 › プログラミング › タグ付きユニオン

タグ付きユニオン

プログラミング Svenska → 更新: 2026-10-23

どのバリアントなのかを示す明示的な「タグ」フィールドを持つユニオン型。C/C++のunionはタグなし(メモリを共有するだけで実行時エラーを招きやすい)だが、タグ付きユニオンは型情報を持ち、コンパイラが検証できる。

TypeScriptでは判別可能なユニオン型(discriminated union)と呼ぶ。type Result = { kind: 'ok'; value: number } | { kind: 'err'; error: string }のように書き、kindに対するswitchでコンパイラが型を絞り込む。Rustのenumは形式的にタグ付きユニオンで、各バリアントが暗黙の判別子を持つ。C++ならstd::variantとstd::visitだ。

典型的な用途はAPIのレスポンス型、ステートマシン、パーサーのASTノード。現代の型システムはタグ付きユニオンを安全に扱えるが、旧来のCのunionは違うフィールドを読んでしまい未定義動作を起こしうる、危険な構文である。

← 用語集に戻る