TL;DR
ESLint などの JavaScript のツールで TypeScript を扱えるようにするツール群。TypeScript 向けのリントルールを追加し、その多くは型の情報を使ってコードを解析する。
なぜ必要か
TypeScript は JavaScript に型の構文を追加した言語なので、JavaScript 向けのツールはそのままでは読めない。公式サイトによると、typescript-eslint は ESLint のようなツールが TypeScript の新しい構文を扱えるようにするために必要である。さらに、TypeScript の型 API を使うので、ESLint だけでは書けない強力なルールを提供できる。
仕組み
eslint、@eslint/js、typescript、typescript-eslint をインストールし、ESLint の flat config に設定を書く。
共有の設定として、次のようなものが用意されている。
recommended: 追加の設定なしで動く、正しさのための基本のルール。TypeScript と衝突する ESLint 本体のルールは無効にするstrict:recommendedに、より主張の強いルールを加えたものstylistic: ロジックを変えずに、一貫したスタイルを強制するルールrecommended-type-checkedなど-type-checkedの付いた設定: 型情報を必要とするルールを加えたもの。使うにはlanguageOptions.parserOptionsの設定が要る
例
// eslint.config.mjs
// @ts-check
import js from "@eslint/js"
import { defineConfig } from "eslint/config"
import tseslint from "typescript-eslint"
export default defineConfig({
files: ["**/*.{js,ts}"],
extends: [js.configs.recommended, tseslint.configs.recommended],
})Effective TypeScript 第2版 ―型システムの力を最大限に引き出す83項目 では、any の拡散を検出する no-unsafe-assignment や、網羅していない switch 文を検出する switch-exhaustiveness-check など、多くのルールが紹介されている。
注意点
strict と strict-type-checked は、メジャーバージョンの間で安定していない。全ルールを有効にする all は、ほとんどのプロジェクトには勧められていない。