「Next.js使ってみたい」
「今時、TypeScriptも導入するでしょ」
「Next.js × TypeScriptの環境でオススメの設定を知りたい」
今回はこうした思いを持つ方向けに記事を書いていきます。
Reactのフレームワークとして人気の高いNext.jsで構築した環境に、TypeScriptを導入してみました。
- create-next-appでNext.jsの環境を構築する方法
- Next.jsで作った環境でTypeScriptを使えるようにする方法
- Next.js × TypeScriptのオススメ設定
本記事で作成する環境のバージョンは、最終的に以下のようになります。
package.json
目次 [hide]
Next.jsプロジェクトを作ろう
早速、npxコマンドでcreate-next-appを実行しましょう。フォルダ名は任意のものを。
以下のような構成でプロジェクトが作成されたと思います。
Next.jsのバージョン9.1でsrcディレクトリがサポートされました。
Reactコンポーネントを格納するpagesディレクトリを、srcディレクトリに移動させましょう。
ここで確認のために、ローカルサーバーを立ち上げてみましょう。
localhost:3000にアクセスすると、以下のような画面が見えるはずです。
次にTypeScriptを使えるようにしましょう。
Next.jsで作った環境でTypeScriptを使えるようにする
まずはnpmでTypeScript化に必要なパッケージをインストールします。
そして以下のファイルの拡張子を.tsまたは.tsxに変更しましょう。
- src/pages/index.js → src/pages/index.tsx
- src/pages/_app.js → src/pages/_app.tsx
- src/pages/api/hello.ts → src/pages/api/hello.ts
試しに型をつけてみましょう!
src/pages/index.tsx
src/pages/_app.tsx
ここで確認のために、ローカルサーバーを立ち上げます。
そうすると、tsconfig.jsonが作成されます。tsconfig.jsonの中身は以下の通りです。
tsconfig.json
tsconfig.jsonのオプションはこちらの記事が参考になると思います。
Next.js × TypeScriptのおすすめ設定
pagesディレクトリには以下2つの特殊なファイルを作成することができます。
- _app.tsx:Routeコンポーネントをラップする特殊なコンポーネントファイル
- _document.tsx:最終的に出力するHTMLファイルの設定ができるファイル
_app.tsxを設定しよう
先ほど、_app.tsxファイルの役割を「Routeコンポーネントをラップする」とお伝えしましたね。
では、実際のところ何を記述するのが良いでしょうか?
答えは、全てのページで共通して実行させたい処理や共通のレイアウトです。
例えば、認証情報の監視が例としてあげられると思います。
Firebase Authenticationで認証状態を監視するコードを書いてみます。
src/pages/_app.tsx
これで、全てのページで認証状態の監視が呼び出されるようになりました。
_document.tsxを記述する
以下のコードでは、htmlタグのlang属性に「日本語ロケール」を示す”ja”を指定しています。
src/pages/_document.tsx
ここまでやれば大方の設定は完了です!
さらに詳細な設定は、別の機会に記事にしてみようかなと思います。
- 無料・簡単・片手でホームページを作成できる自社サービス Rakwi
- Web制作とアプリ開発を学べるオンラインプログラミング講座 Upstairs
- 開発,DX推進支援サービス スタートアッププラン