create-react-appシリーズ
このブログポストはシリーズで作成しております。次はcreate-react-app
のシリーズのリストです。
- Reactとは
- create-react-app
- create-react-appでTypeScriptを使う方法
- [TypeScript] create-react-appで絶対パスのimport
- create-react-appでstyled-componentsの使い方
- Jest
- create-react-appでreact-testing-libraryを使ってテストする
概要
以前ブログでcreate-react-app
を使ってReactプロジェクトを始める方法について説明しました。今回のブログポストではcreate-react-app
で生成したReactプロジェクトでTypeScript
を使う方法について説明します。
ここで紹介するソースコードは下記のリンクで確認できます。
プロジェクト生成
次のコマンドを使ってReactプロジェクトを生成します。
npx create-react-app my-app
そして次のコマンドを使ってReactプロジェクトを実行します。
# cd my-app
npm start
問題なくReactプロジェクトが実行されたら下記のような画面をブラウザで確認することができます。
TypeScript適用
次はcreate-react-app
で生成したReactプロジェクトへTypeScriptを適用する方法について説明します。
インストール
create-react-app
で生成したReactプロジェクトへTypeScript
を適用するため必要なライブラリをインストールする必要があります。次のコマンドを使ってTypeScript
へ必要なライブラリをインストールします。
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
設定
TypeScriptを使うためtsconfig.json
を使ってTypeScriptに関する設定をする必要があります。
TypeScriptのためtsconfig.json
ファイルを生成して下記のように修正します。
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react"
},
"include": [
"src",
"custom.d.ts"
]
}
ファイル拡張子修正
次はTypeScriptがソースコードを認識できるようにファイルの拡張子を修正する必要があります。src
フォルダの.js
ファイル拡張子を.tsx
または.ts
の拡張子で変更します。
- App
.js
> App.tsx
- App.test
.js
> App.test.tsx
- index
.js
> index.tsx
- reportWebVitals
.js
> reportWebVitals.ts
- setupTests
.js
> setupTests.ts
TypeScriptエラー修正
このように.js
ファイル拡張子を.tsx
または.ts
で修正したらTypeScriptがエラーを表示します。このエラーを修正するためApp.test.tsx
とApp.tsx
ファイルを開いて最上段へ下記の内容を追加します。
import React from 'react';
そしてreportWebVitals.ts
ファイルを開いて下記のように修正します。
import { ReportHandler } from 'web-vitals';
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
...
そして./src/custom.d.ts
ファイルを作って下記のように修正します。
declare module '*.svg' {
import * as React from 'react';
export const ReactComponent: React.FunctionComponent<React.SVGProps<
SVGSVGElement
> & { title?: string }>;
const src: string;
export default src;
}
実行
このように修正したReactプロジェクトがうまく起動するか確認するため下記のコマンドを実行してReactプロジェクトを実行します。
npm start
問題なくTypeScriptを設定したら下記のようにReactプロジェクトがブラウザで実行されることが確認できます。
Template
create-react-appを使う理由はReactプロジェクトでプロジェクトを生成する時、たくさんの設定をしないためですが、TypeScriptのためたくさんの設定をしました。しかし、TypeScriptは最近のJavaScriptでは重要な役割をしてるのでReactでもTypeScriptを使わなきゃならないです。
create-react-appもこのようなTypeScriptの重要性を認識してるので、TypeScriptをもっと簡単に提供するためTemplate
オプションを提供してます。そしたら、create-react-appのTempate
オプションを使ってReactのTypeScriptプロジェクトを生成してみましょう。
次のコマンドを実行してReactでTypeScriptが適用されたプロジェクトを生成します。
npx create-react-app my-app --template=typescript
その後、当該フォルダを開いて見ると私たちが上で頑張って設定した内容と同じことが確認できます。
完了
今回のブログポストではcreate-react-app
で生成したReactプロジェクトでTypeScript
を適用する方法についてみてみました。また、create-react-appを使って新しいReactプロジェクトを生成する時、Template
オプションを使ってもっと簡単にTypeScriptが適用されたReactプロジェクトを生成する方法もみてみました。
今度は皆さんのReactプロジェクトへTypeScriptを適用してみて下さい。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。