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

TypeScriptでコンポーネントを型定義する基本を徹底解説!初心者でもわかるReactとTypeScript入門

TypeScriptでコンポーネントを型定義する基本
TypeScriptでコンポーネントを型定義する基本

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

生徒

「Reactでコンポーネントを作るときに、TypeScriptで型を定義すると良いって聞きました。型って何ですか?」

先生

「型というのは、数字なのか文字なのかを決めておくルールのことです。TypeScriptで型を定義すると、プログラムの間違いを事前に防げます。」

生徒

「なるほど。じゃあReactのコンポーネントで型を定義するってどうやるんですか?」

先生

「それでは、ReactとTypeScriptで型定義をする基本の書き方を順番に見ていきましょう!」

1. 型定義とは何かを理解しよう

1. 型定義とは何かを理解しよう
1. 型定義とは何かを理解しよう

TypeScriptにおける型定義とは、 「このデータは文字です」「このデータは数字です」といったルールを、 プログラムを書く前に決めておくことを指します。 あらかじめルールを決めておくことで、 間違ったデータの使い方をしたときに、 実行する前の段階で気づけるようになります。

プログラミング未経験の方は難しく感じるかもしれませんが、 日常生活のルールに置き換えると理解しやすくなります。 例えば「年齢は数字で書く」「名前は文字で書く」と決めておけば、 途中で混乱しにくくなります。 TypeScriptの型定義も、これと同じ考え方です。


type UserName = string;
type UserAge = number;

const name: UserName = "太郎";
const age: UserAge = 20;

このサンプルでは、「名前は文字」「年齢は数字」という型を先に決めています。 もし年齢に文字を入れようとすると、 TypeScriptが「それは違います」と教えてくれます。 初心者の方でも、こうした単純な型から始めることで、 型定義の役割を自然に理解できるようになります。

(画面には「太郎」と「20」という値が正しく扱われ、間違った型を入れるとエラーで知らせてくれます)

このように型定義は、プログラムを難しくするものではなく、 間違いを減らして安心して書くための補助線のような存在です。 まずは「文字か数字かを決める」という感覚を身につけることが、 TypeScriptを理解する第一歩になります。

2. Reactのコンポーネントと型定義の関係

2. Reactのコンポーネントと型定義の関係
2. Reactのコンポーネントと型定義の関係

Reactのコンポーネントは、見た目を作る部品であると同時に、 関数のように外から値を受け取って動作します。 この受け取る値のことを props(プロップス) と呼びます。 TypeScriptでは、このpropsに型定義を行うことで、 「どんな値を受け取るコンポーネントなのか」をはっきりさせられます。

プログラミング未経験の方は、 propsを「コンポーネントに渡すメモ」や「指示書」のように考えると分かりやすいです。 その指示書に「文字だけ書いてください」と型でルールを決めておけば、 数字や別の形のデータが来たときに、すぐに間違いだと気づけます。


type MessageProps = {
  message: string;
};

const Message = ({ message }: MessageProps) => {
  return <p>{message}</p>;
};

このサンプルでは、「messageには文字列を渡す」という型定義をしています。 これにより、間違って数字や別の値を渡そうとすると、 TypeScriptが事前にエラーを教えてくれます。 初心者の方でも、「受け取る値の形を先に決めておく」だけで、 コンポーネントの使い方が分かりやすくなります。

(画面に「こんにちは!」と表示され、文字以外を渡そうとするとエラーで知らせてくれます)

このように、Reactのコンポーネントと型定義はとても相性が良く、 propsに型を付けるだけで安全性と読みやすさが大きく向上します。 次の章では、実際に型定義付きのコンポーネントを もう少し具体的な形で見ていきます。

3. 簡単な型定義付きコンポーネントの例

3. 簡単な型定義付きコンポーネントの例
3. 簡単な型定義付きコンポーネントの例

ここでは、TypeScriptの型定義を使った、 いちばん基本的なReactコンポーネントの例を見ていきます。 まずは「文字列を受け取って画面に表示する」だけの、 とてもシンプルな構成から始めるのがおすすめです。 処理が単純なほど、型定義の役割を理解しやすくなります。

このコンポーネントは、外から渡された名前を受け取り、 その名前を使って挨拶文を表示します。 受け取る値が「必ず文字列である」と型で決めておくことで、 コンポーネントの使い方がはっきりします。


import React from "react";

type GreetingProps = {
  name: string;
};

const Greeting: React.FC<GreetingProps> = ({ name }) => {
  return <h1>こんにちは、{name}さん!</h1>;
};

export default Greeting;
(画面に「こんにちは、太郎さん!」と表示され、文字以外を渡すとエラーで知らせてくれます)

ここで注目したいのは GreetingProps という型です。 この型によって、「このコンポーネントは name という文字列を受け取る」 というルールが明確になります。 その結果、間違った値を渡そうとした場合でも、 実行する前にエラーとして気づけるようになります。

初心者の方は、 「コンポーネントごとに受け取る値の説明書を付ける」 という感覚で型定義を考えると理解しやすくなります。 この基本を押さえておくと、後から複雑なコンポーネントを作るときも安心です。

4. 数字や真偽値の型定義

4. 数字や真偽値の型定義
4. 数字や真偽値の型定義

文字列だけでなく、数字や真偽値(はい・いいえのようなもの)にも型を付けられます。数字はnumber、真偽値はbooleanを使います。


type CounterProps = {
  count: number;
  isVisible: boolean;
};

const Counter: React.FC<CounterProps> = ({ count, isVisible }) => {
  return (
    <div>
      {isVisible && <p>現在のカウント: {count}</p>}
    </div>
  );
};
(画面に「現在のカウント: 5」と表示されます。isVisibleがfalseなら表示されません)

このように型を決めておけば、例えば「countに文字列を渡す」といった間違いを防げます。

5. 複数の値をまとめた型定義

5. 複数の値をまとめた型定義
5. 複数の値をまとめた型定義

型は複数の値をひとまとめに定義することもできます。これはオブジェクト型と呼ばれ、実際のアプリでよく使います。


type UserProps = {
  user: {
    id: number;
    name: string;
    isActive: boolean;
  };
};

const UserCard: React.FC<UserProps> = ({ user }) => {
  return (
    <div>
      <h2>ID: {user.id}</h2>
      <p>名前: {user.name}</p>
      <p>アクティブ: {user.isActive ? "はい" : "いいえ"}</p>
    </div>
  );
};
(画面に「ID: 1」「名前: 花子」「アクティブ: はい」と表示されます)

このように複数の型を組み合わせて定義できるので、大きなアプリでも安心してデータを扱えます。

6. 型定義のメリットを身近な例で理解する

6. 型定義のメリットを身近な例で理解する
6. 型定義のメリットを身近な例で理解する

型定義をしない場合、間違ったデータを渡してもエラーが出ず、画面が真っ白になることがあります。これは初心者にとってとても分かりにくく、原因を探すのが大変です。

一方で型定義をしておけば、「ここに数字を入れないといけません」と最初から決まっているので、間違えるとすぐに赤い警告が表示されます。これは「冷蔵庫のラベルに卵・牛乳と書いてあるおかげで、取り違えを防げる」ようなイメージです。

7. 初心者にとっての安心材料

7. 初心者にとっての安心材料
7. 初心者にとっての安心材料

TypeScriptでコンポーネントに型定義をすると、エラーが減り、予想通りに動作する確率が高まります。初心者ほど「なぜ動かないのか分からない」という状況に悩まされやすいですが、型定義はその悩みを大幅に減らしてくれます。

Reactを学びながらTypeScriptの型定義を少しずつ取り入れていけば、自然と堅牢で分かりやすいコードを書けるようになります。

まとめ

まとめ
まとめ

TypeScriptとReactの型定義を振り返る

ここまで、ReactとTypeScriptを組み合わせてコンポーネントを作る際の 基本的な型定義について学んできました。 型定義とは単なる決まりごとではなく、 「このコンポーネントはどんなデータを受け取るのか」 「どんな使い方を想定しているのか」を明確にするための重要な仕組みです。 特にReactのコンポーネントでは、propsの型を定義することで、 間違ったデータが渡された瞬間に気づけるようになります。

文字列、数字、真偽値といった基本的な型から、 複数の値をまとめたオブジェクト型まで扱えるようになると、 コンポーネントの役割がはっきりし、 コード全体の見通しが良くなります。 初心者のうちは「動けばいい」と考えがちですが、 型を付けることで「正しく動き続けるコード」を書けるようになる点が大きな違いです。

型定義があることで得られる安心感

TypeScriptの型定義は、プログラムを書いている最中に 間違いを教えてくれる心強い存在です。 例えば、文字列を渡すべき場所に数字を渡してしまった場合でも、 実行前にエラーとして気づけるため、 画面が突然壊れるといったトラブルを防げます。 これは、React初心者がつまずきやすい 「原因が分からない不具合」を減らす大きな助けになります。

また、型定義は自分のためだけでなく、 後からコードを読む人のための説明書にもなります。 propsの型を見れば、そのコンポーネントが 何を期待しているのかが一目で分かるため、 チーム開発や将来の自分にとっても役立ちます。

まとめとしての簡単なサンプル


import React from "react";

type SummaryProps = {
  message: string;
};

const SummaryMessage: React.FC<SummaryProps> = ({ message }) => {
  return <p>{message}</p>;
};

export default SummaryMessage;
(画面に指定したメッセージが表示されます。文字列以外を渡すとエラーになります)

このサンプルのように、シンプルなコンポーネントでも 型を定義しておくことで、 使い方を間違えない安全な部品として再利用できます。 小さな型定義の積み重ねが、 大きなReactアプリを支える基盤になります。

先生と生徒の振り返り会話

生徒

「TypeScriptで型を付けるのって、最初は少し面倒に感じましたけど、 間違いにすぐ気づけるのは助かりますね。」

先生

「そうですね。特にReactのコンポーネントでは、 propsの型定義があるだけで安心感が全然違います。」

生徒

「コードを読むだけで、どんなデータを使うのか分かるのも便利だと思いました。」

先生

「その気づきはとても大事です。 型定義はエラー防止だけでなく、読みやすさや保守性も高めてくれます。」

生徒

「まずは簡単なコンポーネントから、 少しずつ型を付ける練習を続けてみます!」

先生

「それが一番の近道です。 ReactとTypeScriptを一緒に使う感覚を、 無理のないペースで身につけていきましょう。」

カテゴリの一覧へ
新着記事
New1
React
Reactで再利用可能なリスト表示コンポーネントを実装しよう!初心者でもわかるReactのコンポーネント分割
New2
React
ReactのPropsとStateのベストプラクティスを整理しよう!初心者でもわかる使い方ガイド
New3
Next.js
Next.jsのRoute Groupの使い方を完全ガイド!App Routerでフォルダ構成を整理する方法
New4
Next.js
Next.js App Routerのtemplate.tsxの役割を完全解説!初心者でも理解できるレイアウト管理の基本
人気記事
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
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.5
Java&Spring記事人気No5
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.6
Java&Spring記事人気No6
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.7
Java&Spring記事人気No7
React
ReactでAxiosローディング状態を管理する方法を完全ガイド!初心者でもわかる非同期通信の基本
No.8
Java&Spring記事人気No8
React
ReactでuseStateを使ったオブジェクト・配列の扱い方完全ガイド!初心者でもわかるReactフック