Next.jsプロジェクトにTypescriptを導入すること自体は、Next.jsの公式チュートリアルに従って行えば簡単に行なえます。
ですが、実際の開発ではFirebaseのような外部パッケージを追加するため、それら外部パッケージに対しても当然 型対応を行う必要があります。
この記事は、これら外部パッケージについて、どういった手順で型対応を行うのか、また型定義の見つけ方についてまとめました。
外部パッケージの型対応は、以下の3つステップを踏んで行います。
- 厳密な型定義チェックを有効にする
- 外部パッケージの型定義を用意する
- コードの修正
手順
Step1. 厳密な型チェックを有効にする
Next.jsは、TypeScriptを導入直後のデフォルトの状態では、厳密な型チェックは行われません。
まず、tsconfig.json
ファイルのstrict
オプションを有効にし、厳密な型チェックが行われるよう設定を修正します。
{
"compilerOptions": {
"strict": true, // trueに修正
// ...
}
}
Step2. 外部パッケージの型定義の用意
型定義を用意する方法は3つあります。
それぞれの方法について説明します。
方法1. 外部パッケージに型定義が含まれている場合
あらかじめ外部パッケージに型定義がパッキングされているケースです。
この場合は、そのまま型定義を利用することができます。
パッケージ内に型定義があるかの確認は、以下で判断が可能です。
-
node_modules
のパッケージ内のpackage.json
にtypes
フィールドに型定義への参照を持っているか? -
node_modules
のパッケージ内にパッケージ名.d.ts
ファイルが作成されているか? -
npmパッケージの詳細ページに
TS
のマークが付いているか?
上図からfirebaseのパッケージは、TS
マークが付いているのでパッケージに型定義が同梱されていることがわかります。
方法2. パッケージと別の型定義ファイルを探す
もし方法1で型定義が見つからなければ、パッケージ名の接頭に@types/パッケージ名
となっているnpmパッケージを検索します。
以下の方法で型定義が無いか探してみます。
- 外部パッケージの
README
に@types/パッケージ名
が無いか確認。 - 型定義の検索サイトTypeScript Types Searchで検索します。
方法3. 型定義を自作する
もし既存の型定義が見つからない場合、型定義を自作します。
src/types/
フォルダ下に、ファイル拡張子.ts
などとし定義ファイルを作成します。
"include": {
"types/**/*"
}
export type PersonType = {
id: string;
name: string;
age: number;
};
Step3. コードの修正
外部パッケージの型定義の準備できたら、コードの修正にかかります。
エディッタにVSCodeを使用している場合、修正箇所を闇雲に探す必要はありません。
コード中の型定義されていない箇所に自動で赤マーカーが表示されます。
これら赤マーカーの箇所を順番に修正していくことで、自然に外部パッケージの型対応は完成します。
おわりに
Next.jsの外部パッケージの型対応の手順の説明は以上となります。
最後まで読んで頂きありがとうございました。
参考
- https://nextjs.org/learn/excel/typescript
- https://github.com/microsoft/TypeSearch
- WEB/DB Press vol.117 TypeScript