LoginSignup
2
0

More than 1 year has passed since last update.

Next.js + TypeScript 外部パッケージの型対応手順

Last updated at Posted at 2021-07-03

title.png

Next.jsプロジェクトにTypescriptを導入すること自体は、Next.jsの公式チュートリアルに従って行えば簡単に行なえます。
ですが、実際の開発ではFirebaseのような外部パッケージを追加するため、それら外部パッケージに対しても当然 型対応を行う必要があります。

この記事は、これら外部パッケージについて、どういった手順で型対応を行うのか、また型定義の見つけ方についてまとめました。

外部パッケージの型対応は、以下の3つステップを踏んで行います。

  • 厳密な型定義チェックを有効にする
  • 外部パッケージの型定義を用意する
  • コードの修正

手順

Step1. 厳密な型チェックを有効にする

Next.jsは、TypeScriptを導入直後のデフォルトの状態では、厳密な型チェックは行われません。
まず、tsconfig.jsonファイルのstrictオプションを有効にし、厳密な型チェックが行われるよう設定を修正します。

tsconfig.json
{
  "compilerOptions": {
    "strict": true, // trueに修正
    // ...
  }
}

Step2. 外部パッケージの型定義の用意

型定義を用意する方法は3つあります。
それぞれの方法について説明します。

方法1. 外部パッケージに型定義が含まれている場合

あらかじめ外部パッケージに型定義がパッキングされているケースです。
この場合は、そのまま型定義を利用することができます。
パッケージ内に型定義があるかの確認は、以下で判断が可能です。

  • node_modulesのパッケージ内のpackage.jsontypesフィールドに型定義への参照を持っているか?
  • node_modulesのパッケージ内にパッケージ名.d.tsファイルが作成されているか?
  • npmパッケージの詳細ページTSのマークが付いているか?

mark.jpg

上図からfirebaseのパッケージは、TSマークが付いているのでパッケージに型定義が同梱されていることがわかります。

方法2. パッケージと別の型定義ファイルを探す

もし方法1で型定義が見つからなければ、パッケージ名の接頭に@types/パッケージ名となっているnpmパッケージを検索します。
以下の方法で型定義が無いか探してみます。

  • 外部パッケージのREADME@types/パッケージ名が無いか確認。
  • 型定義の検索サイトTypeScript Types Searchで検索します。

sc.png

方法3. 型定義を自作する

もし既存の型定義が見つからない場合、型定義を自作します。
src/types/フォルダ下に、ファイル拡張子.tsなどとし定義ファイルを作成します。

tsconfig.json
"include": {
  "types/**/*"
}
types/sample.ts
export type PersonType = {
  id: string;
  name: string;
  age: number;
};

Step3. コードの修正

外部パッケージの型定義の準備できたら、コードの修正にかかります。

エディッタにVSCodeを使用している場合、修正箇所を闇雲に探す必要はありません。
コード中の型定義されていない箇所に自動で赤マーカーが表示されます。
これら赤マーカーの箇所を順番に修正していくことで、自然に外部パッケージの型対応は完成します。

おわりに

Next.jsの外部パッケージの型対応の手順の説明は以上となります。
最後まで読んで頂きありがとうございました。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0