TypeScript対応Reactプロジェクトの作成方法を完全ガイド!初心者でもわかるReactとTypeScriptの基本
生徒
「Reactを学びたいのですが、TypeScriptを使った方がいいって聞きました。どうやって始めればいいですか?」
先生
「ReactとTypeScriptを組み合わせると便利ですよ。まずはTypeScript対応のReactプロジェクトを作る方法から見ていきましょう。」
生徒
「難しそうですが、初心者でもできますか?」
先生
「大丈夫です。コマンドを入力するだけで準備できるので安心してください。」
1. ReactとTypeScriptを一緒に使う準備とは?
ReactとTypeScriptを一緒に使うためには、まずパソコンにNode.js(ノードジェイエス)をインストールしておく必要があります。Node.jsとは、JavaScriptをパソコン上で動かすためのソフトのことです。これがあると、Reactの開発環境を作れるようになります。
また、プログラムを書くためにはVisual Studio Code(VSCode)というエディタを使うのがおすすめです。VSCodeは無料で使えて、TypeScriptやReactのコードを書きやすくしてくれる機能がたくさん入っています。
2. TypeScript対応のReactプロジェクトを作成する方法
Reactのプロジェクトを作るには、create-react-appという便利なツールを使うのが一般的です。このツールを使うと、必要なファイルや設定を自動で準備してくれるので、初心者でも迷わずスタートできます。
TypeScript対応のReactプロジェクトを作る場合は、以下のコマンドを実行します。
npx create-react-app my-app --template typescript
ここでmy-appはプロジェクトの名前です。好きな名前に変えても大丈夫です。たとえば「react-ts-sample」としても問題ありません。
このコマンドを実行すると、自動的にTypeScript対応のReact環境が整います。もしコマンドが難しく感じる場合は、「料理の材料をまとめて買ってきてくれる買い物リスト」と思ってみると分かりやすいでしょう。
3. プロジェクトのフォルダを確認しよう
作成が終わると、新しいフォルダができます。その中にはsrcやpublicといったフォルダがあり、特にsrcの中にあるファイルを編集してアプリを作っていきます。
TypeScriptを使うプロジェクトでは、ファイルの拡張子が.tsxになります。これは「TypeScriptの拡張されたJSX」という意味で、ReactのコンポーネントをTypeScriptで書くときに使います。
4. サンプルコードを動かしてみよう
まずはプロジェクトを作成したら、以下のコマンドでアプリを起動してみましょう。
cd my-app
npm start
これでブラウザが自動的に開き、Reactアプリが動いている画面が表示されます。
5. TypeScriptを使ったReactコンポーネントの例
次に、実際にTypeScriptで書かれた簡単なReactコンポーネントを見てみましょう。
import React, { useState } from "react";
function App() {
const [message, setMessage] = useState<string>("こんにちは!");
return (
<div>
<h1>{message}</h1>
<button onClick={() => setMessage("ボタンがクリックされました!")}>
クリックしてみよう
</button>
</div>
);
}
export default App;
ここで注目してほしいのは、useState<string>という部分です。この記述によって「messageという状態は文字列(string)ですよ」と決めています。TypeScriptがあることで、誤って数字を入れたりするとすぐにエラーを教えてくれるのです。
6. 初心者がつまずきやすいポイントと対策
初心者がReactとTypeScriptを始めるときによくあるつまずきは以下のようなものです。
- Node.jsが入っていない:事前に公式サイトからインストールしておきましょう。
- 拡張子の違い:JavaScriptでは
.jsですが、TypeScript対応Reactでは.tsxです。 - 型エラーに戸惑う:エラーは「間違いを早く気づかせてくれるヒント」と考えると前向きに取り組めます。
最初は難しく感じても、少しずつ慣れることでReactとTypeScriptの便利さが実感できるようになります。
7. ReactとTypeScriptプロジェクトの魅力
ReactとTypeScriptを組み合わせることで、初心者でも「間違いを早く見つけやすい」「コードが分かりやすい」「大きなアプリにも対応できる」というメリットがあります。つまり、この組み合わせを使うことは、安心してプログラミングを学び進めるための最良のスタートラインなのです。
まとめ
ここまで、TypeScriptを導入したReactプロジェクトの立ち上げから、実際のコードの書き方、そして初心者が直面しやすい課題の解決策までを詳しく解説してきました。モダンなWebフロントエンド開発において、ReactとTypeScriptの組み合わせはもはやデファクトスタンダード(標準)と言っても過言ではありません。
なぜ、多くのエンジニアがこの組み合わせを推奨するのでしょうか。それは単に流行っているからではなく、開発の「安全性」と「効率性」を劇的に向上させてくれるからです。JavaScript単体での開発では、プログラムを実行してみるまで気づけなかったような単純なタイポ(打ち間違い)や、データの型の不一致によるバグが、TypeScriptを使うことで「コードを書いている最中」に即座に指摘されます。これにより、デバッグに費やす無駄な時間を大幅に削減し、本来やりたかった機能実装に集中できるようになります。
TypeScript導入のメリットを再確認しよう
React開発にTypeScriptを取り入れることで得られる具体的なメリットをいくつか振り返ってみましょう。
- 自動補完機能の強化: VSCodeなどのエディタを使用している場合、Props(プロパティ)として何を渡すべきか、どのようなメソッドが使えるかをTypeScriptが予測して提示してくれます。
- 保守性の向上: 数ヶ月後に自分のコードを読み返したとき、あるいはチーム開発で他人のコードを読むとき、型定義があることで「この関数は何を受け取り、何を返すのか」が一目で理解できます。
- リファクタリングの安心感: 変数名や構造を変更した際、影響範囲をすべてコンパイラが教えてくれるため、壊れることを恐れずに改善を繰り返せます。
実践的なコンポーネントの記述例
実際のプロジェクトでは、より複雑なPropsの受け渡しが発生します。以下に、TypeScriptを用いた「コンポーネント間のデータ受け渡し」のサンプルプログラムを用意しました。これを参考に、さらに一歩進んだReact開発に挑戦してみましょう。
import React, { useState } from "react";
/**
* 挨拶を表示するコンポーネントのプロパティ(型定義)
*/
interface GreetingProps {
name: string;
count: number;
}
/**
* 子コンポーネント:名前と回数を表示する
*/
const Greeting: React.FC<GreetingProps> = ({ name, count }) => {
return (
{name}さん、こんにちは!
現在のカウント:{count} 回目です。
);
};
/**
* 親コンポーネント:状態管理とユーザー操作
*/
const CounterApp: React.FC = () => {
const [count, setCount] = useState<number>(0);
const [userName, setUserName] = useState<string>("ゲスト");
const increment = () => {
setCount((prev) => prev + 1);
};
return (
TypeScript実践サンプル:カウントアプリ
setUserName(e.target.value)}
/>
{/* 子コンポーネントへのPropsの受け渡し */}
);
};
export default CounterApp;
上記のコードでは、interfaceキーワードを使ってコンポーネントが受け取るデータの形を定義しています。このように「契約」をあらかじめ決めておくことで、コンポーネントを再利用する際の間違いを未然に防いでくれるのがTypeScriptの素晴らしいところです。
学習を継続するためのステップ
まずは create-react-app --template typescript で作成したプロジェクトの中身をいじるところから始めてください。最初は赤い波線(エラー表示)が出るたびに嫌な気持ちになるかもしれませんが、それはあなたを守るためのメッセージです。公式ドキュメントや信頼できる技術ブログを参考に、一つずつ型を当てはめていく工程を楽しんでみてください。
また、最新のトレンドとしては Vite(ヴィート) というツールを使った高速なプロジェクト作成方法もありますが、まずは基本となる今回の方法をマスターするのが近道です。コツコツとコードを書き続け、自分だけのアプリケーションを作り上げていきましょう!
生徒
「先生、ありがとうございました!まとめを読んで、TypeScriptを使う理由がさらに明確になりました。最初は『コードを書く量が増えて面倒かな?』と思っていましたが、型があるおかげでVSCodeがヒントをたくさん出してくれるので、逆に書くのが楽になった気がします。」
先生
「その通りですね。最初は少し戸惑うかもしれませんが、型定義は『未来の自分や仲間へのメッセージ』でもあります。コード量が増えるというよりは、バグを探す時間を先に投資しているイメージですね。」
生徒
「さっきのサンプルコードにあった interface というのも使ってみました。これを使うと、子コンポーネントに何を渡せばいいか一目瞭然ですね。JavaScriptだけの時よりも、迷わずに実装を進められました!」
先生
「素晴らしい気づきです。プログラミングにおいて、自分が書いたものを後から自信を持って修正できるというのは非常に大きな強みになります。もし型エラーが出て困ったときは、まずはその変数が『文字列(string)』なのか『数値(number)』なのか、あるいは『オブジェクト』なのかを整理することから始めましょう。」
生徒
「はい!エラーメッセージも翻訳ツールなどを使いながらじっくり読んでみます。これからはTypeScript抜きでの開発は考えられなくなりそうです(笑)。」
先生
「あはは、その意気です!もしさらにステップアップしたいなら、Next.jsというフレームワークについても調べてみると良いですよ。ReactとTypeScriptの知識がそのまま活かせますし、より高度なWebアプリが作れるようになります。」
生徒
「Next.jsですね!まずは今回のReactとTypeScriptの基礎をしっかり固めてから、次なるステップに挑戦してみます。もっと色々なものを作れるようになりたいです!」
先生
「応援していますよ。まずはプロジェクトをたくさん作って、壊して、直してを繰り返してみてください。それが一番の上達への近道ですから。頑張りましょう!」