React Routerは、URLパラメータ、ローダーデータなどに対して型推論を強化するために、ルート固有の型を生成します。テンプレートから開始しなかった場合、このガイドが設定に役立ちます。
React Routerにおける型安全性の詳細については、型安全性の説明をご覧ください。
.react-router/
を.gitignore
に追加するReact Routerは、アプリケーションのルートディレクトリに.react-router/
ディレクトリに型を生成します。このディレクトリはReact Routerによって完全に管理されており、.gitignore
に追加する必要があります。
.react-router/
TypeScriptが生成された型を使用するように、tsconfigを編集します。さらに、ルートモジュールに対して相対的な兄弟として型をインポートできるように、rootDirs
を設定する必要があります。
{
"include": [".react-router/types/**/*"],
"compilerOptions": {
"rootDirs": [".", "./.react-router/types"]
}
}
アプリケーションで複数のtsconfig
ファイルを使用している場合、アプリケーションディレクトリをinclude
しているファイルでこれらの変更を行う必要があります。たとえば、node-custom-server
テンプレートには、tsconfig.json
、tsconfig.node.json
、tsconfig.vite.json
が含まれています。アプリケーションディレクトリを含んでいるのはtsconfig.vite.json
であるため、ルートモジュールの型安全性を確保するために.react-router/types
を設定するのはこのファイルです。
型チェックを独自のタスクとして実行する場合(たとえば、継続的インテグレーションパイプラインの一部として)、型チェックを実行する前に型を生成する必要があります。
{
"scripts": {
"typecheck": "react-router typegen && tsc"
}
}
Route
型ヘルパーを自動インポートする場合、TypeScriptは以下を生成します。
import { Route } from "./+types/my-route";
しかし、verbatimModuleSyntaxを有効にすると
{
"compilerOptions": {
"verbatimModuleSyntax": true
}
}
インポートにtype
修飾子が自動的に追加されます。
import type { Route } from "./+types/my-route";
// ^^^^
これは、バンドラーなどのツールが、バンドルから安全に除外できるタイプ専用のモジュールを検出するのに役立ちます。
React RouterのViteプラグインは、ルート設定(routes.ts
)を編集するたびに、.react-router/types/
に型を自動的に生成するはずです。つまり、react-router dev
(またはカスタム開発サーバー)を実行するだけで、ルートの型を最新の状態に保つことができます。
型安全性の説明で、これらの型をルートに読み込む方法の例を確認してください。