Skip to content

tsconfig オプション 解説

重要な tsconfig オプションを用途別に整理します。型チェックの厳格化、言語ターゲットとモジュールの設定、出力内容の制御、import パスのマッピング、マルチプロジェクトビルドの構成、残りのチェックの調整。

tsconfig は、コンパイラに対してどのファイルを対象にするか、どの程度厳格にするかを指定します。大部分は 2 つのオプションが担います。target は JavaScript の生成レベルを定め、strict は安全チェックをひとまとめで有効にします。以下は挙動を変えるオプションです。デフォルトで有効なフラグには注記があります。設定はベースから派生させ、異なる部分だけを上書きしてください。

リファレンステーブル · 55 項目
55 of 55 rows
厳格性
マスタースイッチ:strictNullChecks、noImplicitAny など複数のオプションを一度に有効化。
型を推論できないパラメータや変数でエラー(無効だと any になる)。
null と undefined がすべての型に代入可能ではなくなり、明示的に扱う必要がある。
関数パラメータを反変でチェック。不完全なコールバックパラメータの型を捕捉。
bind、call、apply を関数の宣言パラメータと照らして型チェック。
クラスプロパティが初期値を持たず、コンストラクタでも代入されない場合にエラー。
オプションプロパティ { p?: T } が明示的な undefined の代入を受け付けなくなる。
基底クラスのメンバーを隠すメンバーに override キーワードを要求。
宣言されたのに一度も読まれないローカル変数でエラー。
宣言されたのに一度も読まれない関数パラメータでエラー。
効果のない式文でエラー。
index シグネチャのキーへのドットアクセスを禁止。角括弧を使う(obj["key"])。
あるコードパスが値を返すのに別のパスが返さないときエラー。
break なしで switch の case が次へ落ちるときエラー。
言語とモジュール
JavaScript の生成レベル(例: ES2022)。新しい target ほど downleveling が減る。
利用できる組み込み API(例: ES2022、DOM、DOM.Iterable)。
出力されるモジュールシステム(例: ESNext、CommonJS、NodeNext)。
Node の実際のルールを使う:各ファイルは最寄りの package.json から CJS か ESM を選び、相対 import には拡張子が必要。
import パスの解決方法(例: bundler、node、nodenext)。
ファイルがモジュールとみなされる条件:auto(import/export の有無)、legacy、force(常に)。
CommonJS モジュールから default-import 形式を許可(多くの設定ではデフォルトで true)。
名前付きの値しか export しないモジュールからの default import を許可(型レベルのみ)。
import は書いたとおりに出力される。型専用の import は import type を使う必要がある(TS 5)。
import が .json ファイルを型付きの値として読み込めるようにする。
.js ファイルをコンパイルの入力に含める。
.js ファイルも JSDoc コメントを読みながら型チェックする。allowJs を暗黙に有効化。
.tsx のコンパイル方法:react-jsx(自動ランタイム)、react(React.createElement)、preserve。
自動で読み込まれる @types パッケージをこのリストに制限。空配列なら何も読み込まない。
@types パッケージを探すフォルダ。ツリーを上がってすべての node_modules/@types を見る代わり。
すべてのファイルが単独でトランスパイル可能であることを保証(bundler と esbuild が要求)。
出力 (emit)
コンパイル済み JavaScript の出力先。
ソースファイルのルート。出力ツリーの形状を安定させる。
.js.map ファイルを出力し、デバッガが TypeScript に対応付ける。
source map を .js.map ではなく .js ファイル内のコメントとして埋め込む。
.d.ts 型宣言を出力する(ライブラリに必要)。
.d.ts.map ファイルを出力し、エディタが宣言から TypeScript ソースへジャンプできるようにする。
.d.ts ファイルのみ出力。JavaScript は bundler に任せる(declaration か composite が必要)。
__rest のようなヘルパーを各ファイルに書き込まず tslib から再利用する。
target が ES2015 未満のとき、iterable の for..of、spread、分割代入を正しく処理。
出力される JavaScript からコメントを取り除く。
型チェックのみを行い、ファイルを書き出さない(bundler が emit を担う場合に使用)。
パス
非相対モジュール解決のベースディレクトリ。
import のプレフィックスを場所に対応付ける。例: { "@/*": ["src/*"] }。
複数のディレクトリを解決用の単一の仮想ルートとして扱う。
プロジェクト構成
プロジェクトを project reference 向けにビルド可能とマーク(declaration と incremental を有効化)。
他の tsconfig プロジェクトに依存し、より速く分離されたビルドを実現する。
ビルド情報を保存し、次回の実行で変更のないファイルの再チェックを省く。
その他のチェック
速度のため .d.ts ファイルの型チェックを省略(デフォルトで true)。
ファイルの実際の大文字小文字と一致しない import でエラー。
配列とインデックスアクセスが T ではなく T | undefined を返す。
クラスフィールドを単純な代入ではなく Object.defineProperty で生成(ES2022+ の target ではデフォルトで true)。
古いフレームワークが使うレガシーなデコレータ構文を有効化(標準化以前)。
長い型名を省略せず、エラーメッセージに完全な型名を表示する。
副作用のみの import(import "./x.css")が何にも解決されないときエラー。
.ts で終わる import パスを許可(noEmit か emitDeclarationOnly が必要)。