Reactでよくある型エラーと解決法をやさしく解説!初心者でも安心できる型安全な考え方
生徒
「ReactとTypeScriptを使うと、エラーがたくさん出て不安になります…」
先生
「そのエラーは、間違いを防ぐためのヒントなんですよ。」
生徒
「でも、何を直せばいいのか分からなくて…」
先生
「よくある型エラーのパターンを知れば、落ち着いて対応できます。」
1. Reactで型エラーが出る理由
ReactとTypeScriptを組み合わせると、PropsやStateに「型」というルールが加わります。型とは「このデータは何の種類か」を示す目印です。
これは、文房具に名前シールを貼るようなものです。ハサミの箱に鉛筆を入れようとすると違和感がありますが、型エラーも同じように「それは違いますよ」と教えてくれます。
2. Propsでよくある型エラー
Propsで多いのは、渡すデータの種類が合っていないエラーです。文字を渡す予定なのに、数字を渡してしまうと発生します。
type MessageProps = {
text: string;
};
function Message(props: MessageProps) {
return <p>{props.text}</p>;
}
export default Message;
このコンポーネントは、文字だけを受け取る約束になっています。違う種類のデータを渡すと、TypeScriptが教えてくれます。
3. Stateの初期値が原因の型エラー
Stateでは、最初に入れる値がとても重要です。最初の値を見て、ReactとTypeScriptは「このStateはこの型だ」と判断します。
import React, { useState } from "react";
function Counter() {
const [count, setCount] = useState<number>(0);
return (
<div>
<p>カウント:{count}</p>
<button onClick={() => setCount(count + 1)}>増やす</button>
</div>
);
}
export default Counter;
ここでは数字だけを扱うStateだと明確にしています。これにより、間違って文字を入れるミスを防げます。
4. nullやundefinedによる型エラー
「まだデータがない状態」を表すために、nullやundefinedを使うことがあります。これを考えずに使うと型エラーになります。
これは、中身が入っていない箱から物を取り出そうとするような状態です。TypeScriptは「本当に入っていますか?」と確認してくれます。
5. フォーム入力で起きやすい型エラー
入力フォームでは、入力された値をStateで管理します。このとき、イベントの型が分からずエラーが出ることがあります。
import React, { useState } from "react";
function NameForm() {
const [name, setName] = useState<string>("");
return (
<div>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
/>
<p>入力された名前:{name}</p>
</div>
);
}
export default NameForm;
ここでは「文字を扱うState」だと決めているため、入力内容も安全に管理できます。
6. 配列やオブジェクトの型エラー
配列やオブジェクトを扱うと、「存在しない項目を使っています」という型エラーが出ることがあります。
これは、住所録に載っていない人を探すようなものです。型定義を確認すると、どこが違うのかが分かります。
7. 型エラーが出たときの心構え
型エラーが出たら、まずは慌てずメッセージを読みます。どのPropsやStateが問題なのか、必ずヒントが書かれています。
すぐに消そうとせず、「なぜこの型が必要なのか」を考えることで、Reactの理解が深まります。
8. 型エラーは成長のサイン
たくさん型エラーを見るのは、それだけ多くのことに挑戦している証拠です。ReactとTypeScriptは、ミスを減らすための心強い味方です。
型エラーは敵ではなく、正しい方向を示してくれる案内役だと考えると、React開発がぐっと楽になります。