カテゴリ: 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のState管理ベストプラクティス!初心者でもわかる再レンダリング最適化の考え方
New2
React
Reactのプロジェクト構成をわかりやすく解説!初心者でも理解できるsrcとpublicディレクトリ
New3
React
React Context APIで多言語対応(i18n)を実装!初心者でもわかるサイト翻訳の仕組み
New4
React
Reactの環境構築とは?初心者でもできるセットアップ手順まとめ
人気記事
No.1
Java&Spring記事人気No1
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.2
Java&Spring記事人気No2
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.3
Java&Spring記事人気No3
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.4
Java&Spring記事人気No4
React
React(TypeScript)で学ぶStateの型推論と型指定の違い!型安全なState管理を初心者向けにやさしく解説
No.5
Java&Spring記事人気No5
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.6
Java&Spring記事人気No6
Next.js
Next.jsのダッシュボード構造におけるLayout設計を徹底解説!初心者でも理解できるLayoutとTemplateの使い方
No.7
Java&Spring記事人気No7
React
ReactのContext APIとReduxの違いを初心者向けに徹底比較!どちらを使うべきか完全解説
No.8
Java&Spring記事人気No8
Next.js
Next.jsとReactの役割の違いを完全解説!初心者でもわかるNext.jsとReactの基本