TypescriptのUnion型はC言語などと同じく共用体ですか？


先日TypeScriptのUnion型からC言語の共用体の動作が納得できたという会話がありました。

TypescriptのUnion型は

> TypeScriptのユニオン型(union type)は「いずれかの型」を表現するものです。

<https://book.yyts.org/reference/values-types-variables/union>

であり、

C言語のUnion型が

> 共用体（きょうようたい、英: union）は、プログラミング言語におけるデータ型の一つで、同じメモリ領域を複数の型が共有する構造である。

<https://ja.wikipedia.org/wiki/%E5%85%B1%E7%94%A8%E4%BD%93>

であるとしらべた結果分かりました。これをみると、同じメモリ領域を複数の型が共有する構造がTypescriptでは成立しないと思いますが、これらの2つのUnion型は同一の（Wikipediaに書かれているような共用体）ものと考えて良ろしいでしょうか？




二者は異なるものと考えて差し支えないです。

TypeScript の Union 型はあくまで型レベルで複数の型のいずれかであることを示すものであり、Intersection 型と対比される存在です。

一方 C
言語の共用体は、ひとつのメモリ領域に複数の型の中からいずれかの型の値を保持するための仕組みです。また、同じメモリ領域を参照しつつ、列挙されている複数の型のいずれかとしてそのメモリ領域を解釈した値を得ることができます。つまり共用体は「メモリ領域を
A という型の値として解釈したり B という型の値として解釈したり好きに決められる」というように使えるものであり、TypeScript の Union
型のように「A という型の値が得られるか B という型の値が得られるかのどちらか一方ができる」というようなものではありません。また TypeScript
ではメモリ上の表現について何も決めていません。

したがって両者は、似たようなセンスを持っているモノではありますが、実用上は異なるものと考えて差し支えないです。




二者は異なるものと考えて差し支えないです。

TypeScript の Union 型はあくまで型レベルで複数の型のいずれかであることを示すものであり、Intersection 型と対比される存在です。

一方 C
言語の共用体は、ひとつのメモリ領域に複数の型の中からいずれかの型の値を保持するための仕組みです。また、同じメモリ領域を参照しつつ、列挙されている複数の型のいずれかとしてそのメモリ領域を解釈した値を得ることができます。つまり共用体は「メモリ領域を
A という型の値として解釈したり B という型の値として解釈したり好きに決められる」というように使えるものであり、TypeScript の Union
型のように「A という型の値が得られるか B という型の値が得られるかのどちらか一方ができる」というようなものではありません。また TypeScript
ではメモリ上の表現について何も決めていません。

したがって両者は、似たようなセンスを持っているモノではありますが、実用上は異なるものと考えて差し支えないです。

