Open4

Discriminated union typesに対応する日本語用語いろいろ

uhyouhyo

判別共用体

英語の用語の直訳に一番近い。しかしunionを共用体と訳すのはC言語とかに由来する用語であり、TypeScriptのunionに共用体という訳語を充てるのはあまり正しくない。

判別という語を敢えて生かすなら「判別ユニオン」「判別合弁型」などになるか。しかしこんな用語が使われているのは見たことがない。TypeScript Deep Dive 日本語版では「判別可能なUnion型」とされており、用語としては長いが分かりやすくかつ正確な訳になっている。

uhyouhyo

直和型

英語でいうとdisjoint union。数学色の色が強い用語であり、discriminated union typesの理論的性質を強調したいときに使う用語。

数学的(集合論的)な意味としては、互いに交わらない2つの集合の和のこと。TypeScriptのdiscriminated union typesではそれぞれの構成要素が混ざらないようにタグ付けするので、型を集合とみなす(素朴な)見方からは確かに直和になっている。

uhyouhyo

タグ付きユニオン

英語でいうと tagged union。「タグ」をもとにユニオン型の各要素を判別するという実装まで反映した用語。

また、集合論的な状況でも、そのままだと交わってしまう2つの集合を直和としたい場合に各要素にタグ付けしてから和をとるテクニックがある(日本語版Wikipedia「直和」にある A \sqcup B の構成を参照)。

そのため、実際の実装にも数学的な方面にも通用するバランスのとれた用語である。筆者がもっとも好んで使う。

uhyouhyo

擬似的な代数的データ型

TypeScriptのdiscriminated unionは、JavaScriptに代数的データ型が存在しないけどそれと同じことをやりたいので型定義と型推論で頑張るものと見なせる。そのようなゴールを的確に表現した用語。

実際の実装とかそういった些細なことは置いておいて本質を一言で伝えたい場合に適した用語である。想定読者が代数的データ型を知っていそうなときに使う。