【2025年5月版 早見表】TypeScript 5.7 tsconfig.jsonの主要オプションのまとめ

最新版 TypeScript 5.8 (2025-05 時点) で利用可能な tsconfig.json オプション一覧をまとめました。
tsconfig.jsonの主要オプション早見表
# | オプション | 主な設定値例 | 説明 |
---|---|---|---|
1 | target | ES5 ES2022 | 出力する JavaScript の ECMAScript バージョンを指定します。低い値にすると旧環境で動きますが、トランスパイル量とバンドルサイズが増えます。 |
2 | module | CommonJS Node18 NodeNext ES2020 | 生成されるモジュール形式を決定します。Node.js 18 固定なら Node18 、最新機能を追うなら NodeNext 、ブラウザ向けは ES 系が適切です。 |
3 | lib | ["ES2022","DOM"] | コンパイラが参照する標準ライブラリを追加します。ブラウザ API を使う場合は DOM を忘れずに指定しましょう。 |
4 | allowJs | true | .js ファイルもコンパイル対象に含めます。段階的移行時に役立ちますがビルド時間が増えます。 |
5 | checkJs | true | allowJs と併用して JavaScript ファイルにも型エラー診断を行います。 |
6 | jsx | react-jsx preserve | JSX の変換方式を設定します。React 17 以降は react-jsx がデフォルト推奨です。 |
7 | jsxImportSource | "react" | react-jsx 使用時に自動インポートされるパッケージ名を変更できます。 |
8 | strict | true | 主要な厳格チェックを一括で有効化します。 |
9 | noImplicitAny | true | 暗黙の any 型をエラーにします。 |
10 | strictNullChecks | true | null と undefined を厳密に区別します。 |
11 | exactOptionalPropertyTypes | true | オプショナルプロパティの代入をより厳格にします。 |
12 | isolatedDeclarations | true | 各ファイルが単独で .d.ts を生成できるか検証します。 |
13 | esModuleInterop | true | CommonJS と ES Modules を相互利用しやすくします。 |
14 | allowSyntheticDefaultImports | true | default export のないモジュールでも import foo from 構文を許可します。 |
15 | moduleResolution | Node Bundler NodeNext | インポート解決のアルゴリズムを選択します。 |
16 | moduleDetection | auto legacy force | .js / .ts をスクリプトかモジュールか判定する方式を切り替えます。 |
17 | baseUrl | "./src" | 相対インポートの基準ディレクトリを指定します。 |
18 | paths | { "@/*": ["*"] } | インポートパスのエイリアスを定義します。 |
19 | rootDirs | ["src","gen"] | 複数ディレクトリを 1 つの仮想ルートに統合します。 |
20 | typeRoots | ["./types"] | グローバル型定義ファイルの検索場所を指定します。 |
21 | types | ["node","jest"] | 自動読み込みする型定義パッケージを限定します。 |
22 | customConditions | ["browser"] | package.json の exports / imports に追加条件を渡します。 |
23 | resolvePackageJsonExports | true | exports フィールドを解決対象に含めます。 |
24 | resolvePackageJsonImports | true | imports フィールドを解決します。 |
25 | allowImportingTsExtensions | true | .ts / .tsx 拡張子付きインポートを許可します。 |
26 | rewriteRelativeImportExtensions | true | .ts インポートを出力時に .js へ自動書き換えます。 |
27 | verbatimModuleSyntax | true | import/export を可能な限り書き換えず出力します。 |
28 | resolveJsonModule | true | JSON ファイルを型付きでインポート可能にします。 |
29 | useDefineForClassFields | false | クラスフィールドの出力仕様を制御します。 |
30 | importsNotUsedAsValues | remove preserve | 型専用 import を JS 出力に残すか制御します。 |
31 | isolatedModules | true | 各ファイル単独でのトランスパイル安全性をチェックします。 |
32 | allowUmdGlobalAccess | true | UMD グローバルオブジェクトへのアクセスを許可します。 |
33 | noEmit | true | 型チェックのみ行い、JavaScript は出力しません。 |
34 | emitDeclarationOnly | true | .d.ts のみ生成します。 |
35 | declaration | true | 型定義ファイル (.d.ts ) を生成します。 |
36 | declarationMap | true | .d.ts 用ソースマップを生成します。 |
37 | sourceMap | true | JavaScript 用ソースマップ (.map ) を生成します。 |
38 | inlineSourceMap | true | ソースマップを JS ファイルに埋め込みます。 |
39 | outDir | "dist" | コンパイル後の出力先ディレクトリを指定します。 |
40 | rootDir | "src" | ソースコードのルートディレクトリを明示します。 |
41 | removeComments | true | 出力ファイルからコメントを削除します。 |
42 | incremental | true | 差分ビルドを高速化します。 |
43 | composite | true | プロジェクト参照機能を有効にします。 |
44 | tsBuildInfoFile | ".cache/build" | 差分ビルド用メタデータの保存先ファイル名を変更します。 |
45 | assumeChangesOnlyAffectDirectDependencies | true | ウォッチビルドで直接依存のみ再ビルドします。 |
46 | disableReferencedProjectLoad | true | エディタで巨大参照ツリーを遅延ロードします。 |
47 | skipLibCheck | true | node_modules 内の型チェックをスキップします。 |
48 | forceConsistentCasingInFileNames | true | 大文字小文字の不一致インポートをエラーにします。 |
49 | noFallthroughCasesInSwitch | true | switch の意図しない fall-through を禁止します。 |
50 | alwaysStrict | true | JS の先頭に "use strict" を自動挿入します。 |
51 | moduleSuffixes | [".ios",".native",""] | React Native でプラットフォーム別ファイルを優先解決します。 |
52 | maxNodeModuleJsDepth | 1 | JS ファイル推論の再帰探索深さを制限します。 |
53 | plugins | [{"name":"typescript-styled-plugin"}] | Language Service プラグインを読み込みます。 |
54 | diagnostics | true | コンパイル統計情報を詳細に出力します。 |
55 | traceResolution | true | モジュール解決手順を詳細ログで確認できます。 |
56 | disableSizeLimit | true | 20 000 行を超えるファイルでも警告なくコンパイルします。 |
57 | preserveConstEnums | true | const enum をインライン展開せず残します。 |
58 | useUnknownInCatchVariables | true | catch (e) 変数の型を unknown にします。 |
59 | noUncheckedIndexedAccess | true | インデックスアクセス結果に ` |
60 | noPropertyAccessFromIndexSignature | true | インデックス署名経由のプロパティアクセスを厳密にチェックします。 |
61 | noImplicitOverride | true | override 指定漏れをエラーにします。 |
62 | noImplicitReturns | true | すべてのコードパスで return が必要か検証します。 |
63 | noImplicitThis | true | this が暗黙的に any になる状況を禁止します。 |
64 | noUnusedLocals | true | 未使用ローカル変数をエラーで報告します。 |
65 | noUnusedParameters | true | 未使用パラメータをエラーで報告します。 |
66 | exactOptionalPropertyTypes | true | オプショナルプロパティの代入をより厳格にします。 |
67 | noCheck | true | 型解析をほぼ行わず高速にビルドします。 |
68 | erasableSyntaxOnly | true | TypeScript 独自構文に実行時コードが含まれないか検査し、Node.js の --experimental-strip-types モードと合わせて安全なビルドを保証します。 |
69 | libReplacement | true false | lib ファイルをサードパーティ製に差し替える機能を有効/無効化します。5.8 から無効 (false ) でオーバーヘッドを削減可能です。 |
用途別の使い方
型安全強化
まずは strict を軸に、小規模から段階的に強化する方法を示します。
jsonc{
"compilerOptions": {
"strict": true,
"exactOptionalPropertyTypes": true,
"noImplicitAny": true
}
}
exactOptionalPropertyTypes
を有効にすると、オプショナルプロパティへ 未定義以外 を割り当てた際の見逃しを防止できます。型事故を減らしたい API サーバーや業務システムでは効果大です。
モジュール解決最適化
jsonc{
"compilerOptions": {
"moduleResolution": "NodeNext",
"moduleDetection": "auto",
"baseUrl": "./src",
"paths": {
"@/*": ["*"]
},
"customConditions": ["browser"]
}
}
moduleDetection:"auto"
によりpackage.json
の"type":"module"
を自動考慮し、スクリプト/モジュール判定が賢くなります- SPA でブラウザ用ビルドを生成する際、
customConditions:["browser"]
を追加するとexports
フィールドの"browser"
サブ条件が選択され、軽量バンドルが得られます
実行環境互換性向上
jsonc{
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true
}
}
CommonJS ライブラリを default import で読み込みつつ、package.json
を読まずに JSON を型付きでインポートできます。Node.js とブラウザで共通コードを共有するモノリポ構成に最適です。
ビルド出力制御
jsonc{
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
"declaration": true,
"rewriteRelativeImportExtensions": true
}
}
rewriteRelativeImportExtensions
を有効にすると、import "./foo.ts"
を自動で ./foo.js
に置換した JS が生成され、Babel や Vite を介さず即実行可能な成果物が得られます。フレームワークレスのライブラリ配布で特に便利です。
パフォーマンス高速化
jsonc{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": ".cache/build.tsbuildinfo",
"assumeChangesOnlyAffectDirectDependencies": true,
"disableReferencedProjectLoad": true
}
}
incremental
で差分ビルドassumeChangesOnlyAffectDirectDependencies
によりウォッチビルドが体感数倍に短縮され、少数ファイルの修正反映が高速化されます- 巨大モノレポでは
disableReferencedProjectLoad
でエディタメモリを節約しつつ、必要プロジェクトだけ遅延読み込みします
Yarn での差分ビルド例:
bashyarn tsc --build --watch
Frontend 特化設定
jsonc{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "react"
}
}
React 17+ 環境では react-jsx
がデフォルトで自動 import React
を省略しつつ、フラグメントも軽量に展開します。Vite + React なら追加設定なしで即反映されます。
デバッグ支援
jsonc{
"compilerOptions": {
"diagnostics": true,
"traceResolution": true,
"sourceMap": true
}
}
diagnostics
で各フェーズの処理時間を把握traceResolution
で “なぜそのモジュールが見つからないのか” を根本原因から解析
まとめ
まず strict を有効化 → パフォーマンス系でビルド体験を改善 → モジュール解決を最適化 の順で導入すると、学習コストを抑えつつ高品質なコードベースが得られます。
本早見表と目的別スニペットを組み合わせ、プロジェクトの成長に応じて“足りないピース”だけを追加入力してください。
関連リンク
- article
【対処法】Cursorで発生する「Claude 4 is not currently enabled in the slow pool due to high demand...」エラーの原因と対応
- article
AI 時代の人間の役割とは?Claude 4 の登場で再考すべきこと
- article
マーケター必見!ChatGPT を活用した最新 SEO 戦略とコンテンツ作成術【2025 年6月版】
- article
TypeScript で学ぶ!GOF 設計パターン実装ガイド
- article
Tailwind CSS でアニメーションをつける:motion-safe と keyframes の基本
- article
Zustandでの非同期処理とfetch連携パターン(パターン 7: リクエストのキャンセルと競合状態の管理)