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

ReactのProps必須・オプショナル指定を完全解説!初心者でもわかる型安全なProps管理

Propsの必須・オプショナル指定の方法
Propsの必須・オプショナル指定の方法

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

生徒

「ReactでPropsって必ず全部渡さないといけないんですか?」

先生

「いいえ、必ずしもそうではありません。Propsには必須のものと、渡さなくてもよいオプショナルなものがあります。」

生徒

「必須とオプショナルの違いってどうやって決めるんですか?」

先生

「TypeScriptを使うと、必須かオプショナルかを型として明確に書けるんです。具体例を見ながら学んでみましょう!」

1. Propsの必須とオプショナルとは?

1. Propsの必須とオプショナルとは?
1. Propsの必須とオプショナルとは?

Reactでは、コンポーネントに値を渡す仕組みとしてProps(プロップス)があります。その中で「必須」とは、必ず渡さなければならない値のことです。一方で「オプショナル」とは、渡さなくてもエラーにならない値です。日常生活でたとえると、カレーを作るときの「ご飯」は必須ですが、「福神漬け」はあってもなくても良いオプショナルな存在と考えると分かりやすいです。

2. TypeScriptで必須Propsを指定する方法

2. TypeScriptで必須Propsを指定する方法
2. TypeScriptで必須Propsを指定する方法

TypeScriptでは、Propsの型を定義するときに何も記号をつけなければ、そのプロパティは必須になります。たとえば「名前」を必ず表示したい場合、次のように書きます。


type UserProps = {
  name: string; // 必須
};

function UserCard(props: UserProps) {
  return <h1>こんにちは、{props.name}さん</h1>;
}

function App() {
  return (
    <div>
      <UserCard name="太郎" /> 
      {/* nameを渡さないとエラーになる */}
    </div>
  );
}
(画面に「こんにちは、太郎さん」と表示されます)

3. TypeScriptでオプショナルPropsを指定する方法

3. TypeScriptでオプショナルPropsを指定する方法
3. TypeScriptでオプショナルPropsを指定する方法

オプショナルPropsは、型定義の後ろに「?」をつけます。これで「渡してもいいし、渡さなくてもいい」状態になります。たとえば「年齢」をオプショナルにすると次のように書けます。


type UserProps = {
  name: string;     // 必須
  age?: number;     // オプショナル
};

function UserCard(props: UserProps) {
  return (
    <div>
      <h1>こんにちは、{props.name}さん</h1>
      {props.age && <p>{props.age}歳です</p>}
    </div>
  );
}

function App() {
  return (
    <div>
      <UserCard name="太郎" age={20} />
      <UserCard name="花子" />
    </div>
  );
}
(1つ目は「こんにちは、太郎さん」と「20歳です」と表示され、2つ目は「こんにちは、花子さん」とだけ表示されます)

4. デフォルト値を設定する方法

4. デフォルト値を設定する方法
4. デフォルト値を設定する方法

オプショナルPropsには、デフォルトの値を設定することもできます。これにより、Propsを渡さなかった場合でもあらかじめ決められた値が表示されます。


type UserProps = {
  name: string;
  age?: number;
};

function UserCard({ name, age = 18 }: UserProps) {
  return (
    <div>
      <h1>こんにちは、{name}さん</h1>
      <p>{age}歳です</p>
    </div>
  );
}

function App() {
  return (
    <div>
      <UserCard name="太郎" age={25} />
      <UserCard name="花子" />
    </div>
  );
}
(1つ目は「こんにちは、太郎さん」「25歳です」と表示され、2つ目は「こんにちは、花子さん」「18歳です」と表示されます)

5. 必須とオプショナルを使い分けるポイント

5. 必須とオプショナルを使い分けるポイント
5. 必須とオプショナルを使い分けるポイント

では、どのように必須とオプショナルを決めればよいのでしょうか。基本的には「その値がないと意味が通じない」場合は必須にし、それ以外はオプショナルにすると良いです。たとえば「ユーザー名」は必須ですが、「プロフィール画像」はオプショナルでも大丈夫です。必須とオプショナルを適切に使い分けることで、Reactのコンポーネントは柔軟で使いやすくなります。

6. Props必須・オプショナル指定のメリット

6. Props必須・オプショナル指定のメリット
6. Props必須・オプショナル指定のメリット

Propsを必須・オプショナルで分けることには大きなメリットがあります。

  • エラーを未然に防げる:必須Propsを忘れるとエラーで気づけます。
  • コードの読みやすさ向上:オプショナルにすることで、柔軟に使えると分かります。
  • 開発の安心感:型安全と組み合わせることで、Reactアプリを安心して作成できます。
カテゴリの一覧へ
新着記事
New1
React
Reactのフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方
New2
React
Reactでできること一覧!初心者でもわかるWebアプリ・スマホアプリ・PWAの活用方法
New3
React
React.jsが人気な理由!VueやAngularとの違いを初心者向けに徹底比較
New4
Next.js
Next.js×StorybookでUI開発環境を整える方法!初心者でもわかるNext.jsの環境構築
人気記事
No.1
Java&Spring記事人気No1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.3
Java&Spring記事人気No3
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.4
Java&Spring記事人気No4
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.7
Java&Spring記事人気No7
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方
No.8
Java&Spring記事人気No8
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介