Open1

tsconfig.json

haseyuyhaseyuy

tsconfigを設定する

tsconfig.jsonの作成

typescriptがpackage.jsonのdependenciesに入っているプロジェクトで以下を実行

$ npx tsc --init

typescriptがグローバルインストールされていれば次のように実行も可能

$ tsc --init
Created a new tsconfig.json with:                                                                   
                                                                                                 TS 
  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true

オプション

target

  • どの動作環境向けにトランスパイルするかを指定
  • 例えば"target":"es5"を指定した場合は() => {}といったアロー関数構文をES5でも動くfunction(){}という形式にコンパイルしてくれる
  • Babelなどの専用コンパイラやモジュールバンドラに処理を任せたい場合はtarget"esnext"を指定して、そこからバージョンに合わせたコンパイルを各々にお願いすることになる

module

  • どのモジュールパターンで出力するかを指定
  • バックエンドならcommonjs、フロントエンドならes2021esnextを指定すると良さそう

strict

  • The strict flag enables a wide range of type checking behavior that results in stronger guarantees of program correctness.
  • strict modeは有効化しないとTypeScriptの恩恵が受けにくいので基本trueが無難

esModuleInterop

  • CommonJSなモジュールをimportするときにinteropするオプション。

skipLibCheck

  • ライブリリの型の不一致を無視するオプション(mochaとjestの方が衝突してコンパイルエラーが起きるのを避けたりする)

forceConsistentCasingInFileNames

  • macOSでファイル名が大文字小文字の違いを無視してimportに成功するが、他のOSでは失敗する現象をコンパイラのレベルで阻止する。基本trueが無難