Skip to content

TypeScriptの非対応バージョン警告の解決方法

問題の概要

TypeScriptプロジェクトでESLintを使用する際に、以下の警告が表示されることがあります:

none
=============

WARNING: You are currently running a version of TypeScript which is not 
officially supported by @typescript-eslint/typescript-estree.

You may find that it works just fine, or you may not.

SUPPORTED TYPESCRIPT VERSIONS: >=3.3.1 <4.4.0

YOUR TYPESCRIPT VERSION: 4.4.2

Please only submit bug reports when using the officially supported 
version.

=============

これは、使用しているTypeScriptのバージョンが @typescript-eslint/typescript-estree パッケージの公式サポート範囲外であることを示しています。

注意

この警告は、パッケージ間のバージョン互換性の問題を示しています。無視しても動作する場合もありますが、予期しないESLintの挙動や解析エラーの原因となる可能性があります。

原因分析

この問題は、TypeScriptとESLint関連パッケージのバージョン不一致によって発生します。主な原因は:

  • TypeScriptが新しいバージョンに更新されたが、ESLint関連パッケージが古いまま
  • 間接的な依存関係で古いバージョンの @typescript-eslint/typescript-estree が使用されている
  • パッケージマネージャーのロックファイルによる古いバージョンの固定

解決方法

方法1: ESLint関連パッケージの更新(推奨)

最も安全で推奨される解決方法は、ESLintとTypeScript ESLintパッケージを最新バージョンに更新することです:

bash
npm i eslint@latest @typescript-eslint/parser@latest @typescript-eslint/eslint-plugin@latest --save-dev

更新後、以下のような互換性のあるバージョン構成になります:

json
{
  "eslint": "^8.38.0",
  "@typescript-eslint/parser": "^5.59.2",
  "@typescript-eslint/eslint-plugin": "^5.59.2",
  "typescript": "^5.0.4"
}

バージョン対応表

主要な @typescript-eslint/typescript-estree バージョンと対応するTypeScriptバージョン:

typescript-estree バージョンTypeScript バージョン
8.26.0TS 5.8
8.10.0TS 5.6
7.14.0TS 5.5
7.2.0TS 5.4
6.13.0TS 5.3
6.5.0TS 5.2
5.61.0TS 5.1
5.55.0TS 5.0

方法2: 依存関係の衝突解決

複数のパッケージが異なるバージョンの @typescript-eslint/typescript-estree を要求している場合、以下のコマンドで依存関係を調査できます:

bash
npm why @typescript-eslint/typescript-estree

出力例:

@typescript-eslint/typescript-estree@4.33.0 dev
node_modules/@typescript-eslint/typescript-estree
  @typescript-eslint/typescript-estree@"4.33.0" from @typescript-eslint/experimental-utils@4.33.0
  node_modules/@typescript-eslint/experimental-utils
    @typescript-eslint/experimental-utils@"^4.0.1" from eslint-plugin-jest@24.7.0
    node_modules/eslint-plugin-jest
      dev eslint-plugin-jest@"^24.3.6" from the root project

この例では、eslint-plugin-jest が古いバージョンを要求しているため、このパッケージを更新する必要があります。

方法3: パッケージマネージャーによるバージョン強制

Yarnを使用している場合は resolutions、npmの場合は overrides を使用して特定のバージョンを強制できます:

json
{
  "resolutions": {
    "@typescript-eslint/typescript-estree": "^5.59.2"
  }
}
json
{
  "overrides": {
    "@typescript-eslint/typescript-estree": "^5.59.2"
  }
}

方法4: 警告の無効化(非推奨)

どうしても解決できない場合で、警告のみを抑制したい場合は、ESLint設定で警告を無効化できます:

javascript
// eslint.config.js または .eslintrc
module.exports = {
  languageOptions: {
    parserOptions: {
      warnOnUnsupportedTypeScriptVersion: false,
    },
  },
};

注意

この方法は警告を表示しなくするだけであり、実際の互換性問題は解決しません。バグレポートを行う際や本番環境では推奨されません。

その他の関連パッケージの更新

Create React Appを使用している場合、eslint-config-next などの関連パッケージも更新が必要な場合があります:

bash
npm update eslint-config-next

予防策

  1. 定期的な依存関係の更新: npm outdated で古いパッケージを定期的にチェック
  2. バージョン互換性の確認: パッケージを更新する前に公式ドキュメントで互換性を確認
  3. ロックファイルの管理: package-lock.jsonyarn.lock を定期的に更新

まとめ

TypeScriptとESLintのバージョン不一致警告は、以下の方法で解決できます:

  1. ESLint関連パッケージの一括更新(最も推奨)
  2. 依存関係の衝突解決
  3. パッケージマネージャーによるバージョン強制
  4. 警告の無効化(最終手段)

プロジェクトの状況に応じて適切な方法を選択し、TypeScriptの新機能を活用しながらもESLintの静的解析のメリットを享受できる環境を構築しましょう。