# ユニオン型とリテラル型

特定の変数や引数に複数の型が入ることが想定される場合、**ユニオン型**を使用します。文字列型と数値型が想定される場合は、`string | number`のように記述します。

<pre class="language-typescript" data-title="index.ts◎"><code class="lang-typescript">...
let user: User = {
  name: "tarou",
  age: 25,
  sayHello: () => {
    console.log(`こんにちは`);
  },
};

<strong>const outputNumOrStr = (val: string | number) => {
</strong><strong>  console.log(val);
</strong><strong>};
</strong></code></pre>

また、上記を利用することで、特定の値だけを代入可能にすることができます。そのようなかたを**リテラル型**と言います。例えば、10と20のみ想定される場合は、`10 | 20`と記述します。

<pre class="language-typescript" data-title="index.ts◎"><code class="lang-typescript">...
const outputNumOrStr = (val: string | number) => {
  console.log(val);
};

<strong>let num1: 10 | 20 = 10;
</strong></code></pre>
