💭

tsconfig.jsonまとめ

2021/05/08に公開

qiitaや公式サイトを参考にまとめてみました。
https://www.typescriptlang.org/ja/tsconfig

一つ気になっているのがincludeがサンプルだとsrc/**/*となっていて、srcと設定したときにサブディレクトリまで含まれるのか?という点です。

{
  "compilerOptions": {
    "target": "es5", // コンパイルの結果出力されるjsはES5
    "lib": [ // コンパイルする際に使用する組み込みライブラリ
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true, // .jsと.jsxもコンパイル対象に含める
    "skipLibCheck": true, // *.d.ts ファイルに対する型チェックをスキップする
    "esModuleInterop": true, // defaultをエクスポートしていない CommonJS 形式のモジュールを、ES Modules でデフォルトインポートする、といったことが可能になる
    "allowSyntheticDefaultImports": true, // コンパイルエラーを回避できるようになる。↑がtrueであれば強制的にtrueになる
    "strict": true, // noImplicitAny,noImplicitThis,alwaysStrict,strictBindCallApply,strictNullChecks,strictFunctionTypes,strictPropertyInitializationが全てtrueになる
    "forceConsistentCasingInFileNames": true, // import時にファイルパスの文字列で大文字小文字を区別するかどうかを指定する
    "noFallthroughCasesInSwitch": true, // fallthroughなcaseのうち、1行以上処理が存在しているにも関わらず脱出処理(breakやreturn)が無いものをエラーにする
    "module": "esnext", // 出力するjsのモジュールの仕組みとしてesnextを使用する
    "moduleResolution": "node", // tscのモジュール解決の方法を指定する
    "resolveJsonModule": true, // jsonファイルをimportして型解決した状態で値を取得できる
    "isolatedModules": true, // コンパイル対象のファイル間の関係性を一切無視して、全てのファイルを単一のモジュールとしてコンパイルする
    "noEmit": true, // trueにするとコンパイル結果を出力しなくなる
    "jsx": "react-jsx", // tsxファイルをjsxやjsにコンパイルする際の出力の形式を指定する
    "baseUrl": "src", // non-relativeなimportにおいて、相対的なカレントディレクトリをどこにするか指定する
    "downlevelIteration": true // targetがES3またはES5の時に、ジェネレータのyield*やfor..of構文などのイテレータを使用した記法を配列・文字列以外で使用する際にtrueにする
  },
  "include": [ // コンパイルする対象ファイルを記述する
    "src"
  ]
}

Discussion