T-CREATOR

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

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

最新版 TypeScript 5.8 (2025-05 時点) で利用可能な tsconfig.json オプション一覧をまとめました。

tsconfig.jsonの主要オプション早見表

#オプション主な設定値例説明
1targetES5 ES2022出力する JavaScript の ECMAScript バージョンを指定します。低い値にすると旧環境で動きますが、トランスパイル量とバンドルサイズが増えます。
2moduleCommonJS Node18 NodeNext ES2020生成されるモジュール形式を決定します。Node.js 18 固定なら Node18、最新機能を追うなら NodeNext、ブラウザ向けは ES 系が適切です。
3lib["ES2022","DOM"]コンパイラが参照する標準ライブラリを追加します。ブラウザ API を使う場合は DOM を忘れずに指定しましょう。
4allowJstrue.js ファイルもコンパイル対象に含めます。段階的移行時に役立ちますがビルド時間が増えます。
5checkJstrueallowJs と併用して JavaScript ファイルにも型エラー診断を行います。
6jsxreact-jsx preserveJSX の変換方式を設定します。React 17 以降は react-jsx がデフォルト推奨です。
7jsxImportSource"react"react-jsx 使用時に自動インポートされるパッケージ名を変更できます。
8stricttrue主要な厳格チェックを一括で有効化します。
9noImplicitAnytrue暗黙の any 型をエラーにします。
10strictNullCheckstruenullundefined を厳密に区別します。
11exactOptionalPropertyTypestrueオプショナルプロパティの代入をより厳格にします。
12isolatedDeclarationstrue各ファイルが単独で .d.ts を生成できるか検証します。
13esModuleInteroptrueCommonJS と ES Modules を相互利用しやすくします。
14allowSyntheticDefaultImportstruedefault export のないモジュールでも import foo from 構文を許可します。
15moduleResolutionNode Bundler NodeNextインポート解決のアルゴリズムを選択します。
16moduleDetectionauto legacy force.js / .ts をスクリプトかモジュールか判定する方式を切り替えます。
17baseUrl".​/​src"相対インポートの基準ディレクトリを指定します。
18paths{ "@​/​*": ["*"] }インポートパスのエイリアスを定義します。
19rootDirs["src","gen"]複数ディレクトリを 1 つの仮想ルートに統合します。
20typeRoots[".​/​types"]グローバル型定義ファイルの検索場所を指定します。
21types["node","jest"]自動読み込みする型定義パッケージを限定します。
22customConditions["browser"]package.jsonexports / imports に追加条件を渡します。
23resolvePackageJsonExportstrueexports フィールドを解決対象に含めます。
24resolvePackageJsonImportstrueimports フィールドを解決します。
25allowImportingTsExtensionstrue.ts / .tsx 拡張子付きインポートを許可します。
26rewriteRelativeImportExtensionstrue.ts インポートを出力時に .js へ自動書き換えます。
27verbatimModuleSyntaxtrueimport/export を可能な限り書き換えず出力します。
28resolveJsonModuletrueJSON ファイルを型付きでインポート可能にします。
29useDefineForClassFieldsfalseクラスフィールドの出力仕様を制御します。
30importsNotUsedAsValuesremove preserve型専用 import を JS 出力に残すか制御します。
31isolatedModulestrue各ファイル単独でのトランスパイル安全性をチェックします。
32allowUmdGlobalAccesstrueUMD グローバルオブジェクトへのアクセスを許可します。
33noEmittrue型チェックのみ行い、JavaScript は出力しません。
34emitDeclarationOnlytrue.d.ts のみ生成します。
35declarationtrue型定義ファイル (.d.ts) を生成します。
36declarationMaptrue.d.ts 用ソースマップを生成します。
37sourceMaptrueJavaScript 用ソースマップ (.map) を生成します。
38inlineSourceMaptrueソースマップを JS ファイルに埋め込みます。
39outDir"dist"コンパイル後の出力先ディレクトリを指定します。
40rootDir"src"ソースコードのルートディレクトリを明示します。
41removeCommentstrue出力ファイルからコメントを削除します。
42incrementaltrue差分ビルドを高速化します。
43compositetrueプロジェクト参照機能を有効にします。
44tsBuildInfoFile".cache​/​build"差分ビルド用メタデータの保存先ファイル名を変更します。
45assumeChangesOnlyAffectDirectDependenciestrueウォッチビルドで直接依存のみ再ビルドします。
46disableReferencedProjectLoadtrueエディタで巨大参照ツリーを遅延ロードします。
47skipLibChecktruenode_modules 内の型チェックをスキップします。
48forceConsistentCasingInFileNamestrue大文字小文字の不一致インポートをエラーにします。
49noFallthroughCasesInSwitchtrueswitch の意図しない fall-through を禁止します。
50alwaysStricttrueJS の先頭に "use strict" を自動挿入します。
51moduleSuffixes[".ios",".native",""]React Native でプラットフォーム別ファイルを優先解決します。
52maxNodeModuleJsDepth1JS ファイル推論の再帰探索深さを制限します。
53plugins[{"name":"typescript-styled-plugin"}]Language Service プラグインを読み込みます。
54diagnosticstrueコンパイル統計情報を詳細に出力します。
55traceResolutiontrueモジュール解決手順を詳細ログで確認できます。
56disableSizeLimittrue20 000 行を超えるファイルでも警告なくコンパイルします。
57preserveConstEnumstrueconst enum をインライン展開せず残します。
58useUnknownInCatchVariablestruecatch (e) 変数の型を unknown にします。
59noUncheckedIndexedAccesstrueインデックスアクセス結果に `
60noPropertyAccessFromIndexSignaturetrueインデックス署名経由のプロパティアクセスを厳密にチェックします。
61noImplicitOverridetrueoverride 指定漏れをエラーにします。
62noImplicitReturnstrueすべてのコードパスで return が必要か検証します。
63noImplicitThistruethis が暗黙的に any になる状況を禁止します。
64noUnusedLocalstrue未使用ローカル変数をエラーで報告します。
65noUnusedParameterstrue未使用パラメータをエラーで報告します。
66exactOptionalPropertyTypestrueオプショナルプロパティの代入をより厳格にします。
67noChecktrue型解析をほぼ行わず高速にビルドします。
68erasableSyntaxOnlytrueTypeScript 独自構文に実行時コードが含まれないか検査し、Node.js の --experimental-strip-types モードと合わせて安全なビルドを保証します。
69libReplacementtrue falselib ファイルをサードパーティ製に差し替える機能を有効/無効化します。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 を有効化 → パフォーマンス系でビルド体験を改善 → モジュール解決を最適化 の順で導入すると、学習コストを抑えつつ高品質なコードベースが得られます。
本早見表と目的別スニペットを組み合わせ、プロジェクトの成長に応じて“足りないピース”だけを追加入力してください。

関連リンク