カテゴリ: React 更新日: 2026/01/30

ReactのPropsでユニオン型やリテラル型を使う方法を完全ガイド!初心者でもわかる型安全なProps管理

Propsでユニオン型やリテラル型を使う方法
Propsでユニオン型やリテラル型を使う方法

先生と生徒の会話形式で理解しよう

生徒

「ReactでPropsに渡す型にユニオン型やリテラル型を使えるんですか?」

先生

「はい、TypeScriptを使えばユニオン型やリテラル型をPropsに指定できます。これで間違った値が渡されないようにできますよ。」

生徒

「ユニオン型とかリテラル型って何ですか?」

先生

「ユニオン型は『いくつかの型のうちどれか』を表す型、リテラル型は『特定の値だけ許す』型です。例を見ていきましょう!」

1. ユニオン型とは?

1. ユニオン型とは?
1. ユニオン型とは?

ユニオン型とは「いくつかの型をまとめたもの」で、どれか一つを選べるという意味です。例えばstring | numberなら文字列か数値のどちらかを受け入れることができます。

ReactのPropsで使うと「このプロパティは文字列か数値のどちらか」というルールを作ることができます。


type BoxProps = {
  size: "small" | "medium" | "large";
};

function Box({ size }: BoxProps) {
  return <div>{size}サイズのボックスです</div>;
}

function App() {
  return (
    <div>
      <Box size="small" />
      <Box size="large" />
    </div>
  );
}
(画面に「smallサイズのボックスです」と「largeサイズのボックスです」が表示されます)

2. リテラル型とは?

2. リテラル型とは?
2. リテラル型とは?

リテラル型は「決められた値しか許さない型」です。例えば「red」「blue」「green」のどれかしか渡せないようにできます。

もし間違って「yellow」と書いた場合、TypeScriptがエラーを出して教えてくれます。


type ButtonProps = {
  color: "red" | "blue" | "green";
};

function ColorButton({ color }: ButtonProps) {
  return <button>{color}ボタン</button>;
}

function App() {
  return (
    <div>
      <ColorButton color="red" />
      <ColorButton color="blue" />
    </div>
  );
}
(画面に「redボタン」と「blueボタン」が表示されます)

3. ユニオン型とリテラル型を組み合わせる

3. ユニオン型とリテラル型を組み合わせる
3. ユニオン型とリテラル型を組み合わせる

ユニオン型とリテラル型を組み合わせると、より柔軟で安全な型定義ができます。例えば「文字列またはnullを許可する」といったケースです。


type MessageProps = {
  text: string | null;
};

function Message({ text }: MessageProps) {
  return <div>{text ? text : "メッセージはありません"}</div>;
}

function App() {
  return (
    <div>
      <Message text="こんにちは" />
      <Message text={null} />
    </div>
  );
}
(画面に「こんにちは」と「メッセージはありません」が表示されます)

4. 実践的な使い方

4. 実践的な使い方
4. 実践的な使い方

リテラル型を使うと、Propsに「ボタンの種類」を限定できます。例えば「primary」「secondary」「danger」だけにすることができます。


type ButtonProps = {
  variant: "primary" | "secondary" | "danger";
};

function StyledButton({ variant }: ButtonProps) {
  return <button>{variant}スタイルのボタン</button>;
}

function App() {
  return (
    <div>
      <StyledButton variant="primary" />
      <StyledButton variant="danger" />
    </div>
  );
}
(画面に「primaryスタイルのボタン」と「dangerスタイルのボタン」が表示されます)

5. ユニオン型やリテラル型を使うメリット

5. ユニオン型やリテラル型を使うメリット
5. ユニオン型やリテラル型を使うメリット

ユニオン型やリテラル型を使うと、以下のメリットがあります。

  • 入力ミスを防げる:誤った値を入れるとコンパイル時にエラーが出る。
  • コードが読みやすい:「このPropsはこれだけの値を取れる」と明確になる。
  • 安全性が高まる:型が制約をかけることで予期せぬエラーを減らせる。

6. 注意点

6. 注意点
6. 注意点

ユニオン型やリテラル型は便利ですが、種類を増やしすぎると逆に複雑になります。必要な範囲で使うことが大切です。特に「色」や「ボタンの種類」など、選択肢が限られる場面で使うと効果的です。

カテゴリの一覧へ
新着記事
New1
React
Reactのカスタムフックで依存関係を扱う方法を解説!初心者でもわかる依存関係管理
New2
Next.js
Next.js Client Componentsでフォーム入力を扱う実装パターン完全ガイド!初心者でもわかるNext.jsフォーム処理
New3
React
Fetch APIでPOSTリクエストを送る方法を完全解説!初心者でもわかるReactのデータ送信
New4
React
useEffectでクリーンアップ関数を使う方法をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.2
Java&Spring記事人気No2
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
React
useEffectでクリーンアップ関数を使う方法をやさしく解説
No.7
Java&Spring記事人気No7
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.8
Java&Spring記事人気No8
React
Reactのフォーム処理でよくあるエラーと解決法を完全解説!初心者でも安心して学べるReact入門