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

ReactとTypeScriptの基本:childrenを型定義する方法を徹底解説!初心者向け入門ガイド

TypeScriptでchildrenを型定義する方法
TypeScriptでchildrenを型定義する方法

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

生徒

「先生、Reactでchildrenってよく出てくるんですが、これは何ですか?」

先生

「childrenは、コンポーネントの中に挟み込んだ要素を受け取るための特別なPropsなんだ。TypeScriptを使うと、このchildrenにもしっかり型をつけることができるんだよ。」

生徒

「なるほど!でも具体的にどうやって型を定義するんですか?」

先生

「それじゃあ、実際にTypeScriptでchildrenを型定義する方法を一緒に見ていこう!」

1. childrenとは?

1. childrenとは?
1. childrenとは?

Reactのchildrenとは、コンポーネントの開始タグと終了タグの間に書いた要素のことです。たとえばHTMLでいうと、<div>タグの中にテキストや画像を入れるのと同じように、Reactでもコンポーネントの中に別の要素を入れることができます。

イメージとしては「お弁当箱におかずを詰める」ようなものです。箱がコンポーネントで、中に入れるおかずがchildrenです。

2. 型をつけない場合のchildren

2. 型をつけない場合のchildren
2. 型をつけない場合のchildren

まずは型をつけずにchildrenを受け取るシンプルな例を見てみましょう。


import React from "react";

const Box = ({ children }) => {
  return <div style={{ border: "1px solid black", padding: "10px" }}>{children}</div>;
};

export default Box;
(Boxコンポーネントで<Box>こんにちは</Box>と書くと、枠で囲まれた「こんにちは」と表示されます)

型をつけない場合でも動作はしますが、TypeScriptのメリットである型安全性を活かせません。そこでchildrenに型をつける方法が役立ちます。

3. TypeScriptでchildrenを型定義する方法

3. TypeScriptでchildrenを型定義する方法
3. TypeScriptでchildrenを型定義する方法

もっとも基本的な方法は、React.ReactNode型を使う方法です。ReactNodeとは、Reactで表示できるすべての要素(文字列・数値・React要素・配列など)を含む便利な型です。


import React, { ReactNode } from "react";

interface BoxProps {
  children: ReactNode;
}

const Box = ({ children }: BoxProps) => {
  return <div style={{ border: "1px solid black", padding: "10px" }}>{children}</div>;
};

export default Box;
(この場合、文字列でも別のコンポーネントでも受け取れます)

この書き方はもっとも広く使われる方法で、初心者でも安心して使えます。

4. 特定の型に限定したchildren

4. 特定の型に限定したchildren
4. 特定の型に限定したchildren

場合によってはchildrenに文字列だけを許可したいこともあります。その場合はstring型を指定します。


interface TextOnlyProps {
  children: string;
}

const TextOnly = ({ children }: TextOnlyProps) => {
  return <p>{children}</p>;
};
(<TextOnly>こんにちは</TextOnly>は動作しますが、<TextOnly><span>テスト</span></TextOnly>はエラーになります)

このように型を限定することで、意図しない使い方を防ぐことができます。

5. ReactElementを使う方法

5. ReactElementを使う方法
5. ReactElementを使う方法

もしchildrenに特定のReact要素しか受け取りたくない場合は、ReactElement型を使います。ReactElementとは「Reactで描画できる単一の要素」を意味します。


import { ReactElement } from "react";

interface WrapperProps {
  children: ReactElement;
}

const Wrapper = ({ children }: WrapperProps) => {
  return <div className="wrapper">{children}</div>;
};
(<Wrapper><span>OK</span></Wrapper>は動作しますが、文字列を直接渡すとエラーになります)

この方法は、必ずコンポーネント要素をchildrenに入れたいときに便利です。

6. childrenの型定義で初心者が覚えておくべきこと

6. childrenの型定義で初心者が覚えておくべきこと
6. childrenの型定義で初心者が覚えておくべきこと

初心者がまず覚えるべきポイントは次の通りです。

  • ReactNodeを使えば幅広くchildrenを受け取れる。
  • stringを指定すれば文字列だけに限定できる。
  • ReactElementを使えばReact要素だけを受け取れる。

最初はReactNodeを使っておけば十分です。その後、プロジェクトの要件に応じて細かく型を制御する方法を学ぶとよいでしょう。

カテゴリの一覧へ
新着記事
New1
React
Reactのセレクトボックス管理を完全解説!初心者でもわかるReactフォーム処理
New2
React
ReactのuseEffectで非同期処理をキャンセルする方法を初心者向けに解説
New3
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
New4
React
ReactとTypeScriptの基本:フォームイベントを扱う方法を徹底解説!初心者向け入門ガイド
人気記事
No.1
Java&Spring記事人気No1
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.2
Java&Spring記事人気No2
React
ReactのPropsを使ってコンポーネントの表示を動的に切り替える方法を解説!初心者でもわかるReact入門
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.5
Java&Spring記事人気No5
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.6
Java&Spring記事人気No6
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.7
Java&Spring記事人気No7
React
Reactの環境構築とは?初心者でもできるセットアップ手順まとめ
No.8
Java&Spring記事人気No8
React
Reactで複数イベントをまとめて処理!共通関数化でコード整理