
TypeScript の tsconfig.json について検討 を 続けています. 今回はコンパイル・オプションについて考えます.
作業環境
- Windows 10 64bit
- Node.js 8.4.0 64bit
- TypeScript 2.4
これまでの振り返り
TypeScript で Hello World では、Visual Studio Code の 公式ドキュメント の tsconfig.json を基に作成し、最小限のコンパイル・オプションを考え、ECMAScript の 最新に合わせた形になりました.
1 | { |
続いて、TypeScript の tsconfig.json を 考える では、コンパイル対象のソースファイルを指定する方法として files と include/exclude を 考え、とりあえず TypeScript 公式ドキュメント の include/exclude サンプル を 使うことにしました.
1 | { |
コンパイル・オプションの検討
コンパイル・オプションは最小限の設定しか見ていなかったので、しっかりと確認したいと思います.
TypeScript 公式ドキュメント の Compiler Options は https://www.typescriptlang.org/docs/handbook/compiler-options.html に なります.
ざっと 70個ぐらいのオプションがあるようで… とりあえず 使いそう or 要検討 なところをピックアップしたいと思います.
tsc --init で 作られる tsconfig.json が カテゴリー別に整理されているので、それに合わせて検討します.
Basic Options
"target": "es2017"は、前回検討の通り 最新のes2017にします."module": "commonjs"は、実行環境の Node.js に 合わせてcommonjsにします"lib": []は、コンパイルに含めるライブラリー、必要になったら都度追加します"declaration": trueは、型定義ファイル*.d.tsを 生成するので使用します"sourceMap": trueは、デバッガー等のツール連携で使用します"outDir": "./dist"は、コンパイル結果などの出力先ですが、命名に悩みつつdistributionでdistかな…"removeComments": trueは、コンパイル後もコメントを保持する必要はないので、削除します.
※ outDir は 悩ましいところです. 一般的なルールが欲しい… GitHub を 見ていると OutDir や out が 多いよう感じました.
Strict Type-Checking Options
"strict": true
すべての strict タイプ・オプション(noImplicitAny,strictNullChecks,noImplicitThis,alwaysStrict) を 有効化するので使います.
このカテゴリはstrictだけで賄えます.
Additional Checks
基本厳しくチェックなので、すべて true に します.
"noUnusedLocals": trueは、未使用のローカル変数 を エラー報告します"noUnusedParameters": trueは、未使用のパラメーター を エラー報告します"noImplicitReturns": trueは、不正確なreturnを エラー報告します"noFallthroughCasesInSwitch": trueは、case文 の フォールスルー を エラー報告します
Module Resolution Options
おそらく types で パッケージを指定するぐらいです.
Source Map Options
ソース・マッピングに関する設定を変更する場合に設定するようですが、使わなそうです.
Experimental Options
実験用. とはいえ、 experimentalDecorators は 使いたいです.
Decorators を 使えるようにするもので、 2017年8月現在で Stage 2 であり、今後仕様が変わるかもしれませんが、フレームワークなどで使ったりするので、 true に しておきます.
その他
tsc --init で 出力されていないけど、設定した方がよさそうなもの.
"newLine": "LF"は、デフォルトがプラットフォーム依存なので明示しておきます"forceConsistentCasingInFileNames": trueは、ファイルの大文字小文字の違いをエラー報告します
とりえずの設定
前回と合わせて、こんな感じでしょうか. まずは これで始めたいと思います.
1 | { |
List で チェックするような項目もコンパイラーでやってくれるのですね. 差異が分からないので、とりあえず厳しく設定してみました.
ディレクトリ系は相変わらずの悩みどころです. どこかにべスプラ的は話がないかなぁ…

