tsconfig.jsonのオプションメモ
2021-03-15
  • sourceMap

    • ブラウザでTypeScriptを理解できるようにする。このオプションをtureにすると、コンパイル対象のファイルに対しての.mapファイル(jsからtsを作るための情報が入っている)が生成される。これによってブラウザでもtsファイルを見ることができる。
  • outDir

    • コンパイル先のディレクトリを指定する事ができるコンパイル元の構造に準拠するが、rootDirが存在しない場合は、コンパイル対象が構造化されていない場合に限り、全てをルートに配置する。
  • rootDir

    • 上述outDirに関連するオプション。これが有効になっている場合、コンパイル後のディレクトリ構造は、rootDirに指定されたものを元にして構成される。
  • removeComments

    • コンパイル時にコメントをコンパイル対象にするかどうかを指定できる。基本的にコンパイル後のサイズが無駄に膨らむのでコメントを残す必要がなければtrueにしとくのがいいと思う。
  • noEmit

    • 型チェック、コンパイルチェックを行うが、何も出力しないモードにすること。
  • downLevelIteration

    • targetがes3,es5のときのみ使える。コンパイル時、文字列ループの際などにエラーが出る可能性があり(for-ofとか)、これをエラーが出ない形でコンパイルしてくれる。ただし、コード量は増える。デフォルトはfalse
  • noEmmitOnError

    • エラーが起こった場合、コンパイルを行わない。
  • strict

    • trueにすると、設定の下記がすべて有効になる。
    // "noImplicitAny": true,                       /* Raise error on expressions and declarations with an implied 'any' type. */
    // "strictNullChecks": true,                    /* Enable strict null checks. */
    // "strictFunctionTypes": true,                 /* Enable strict checking of function types. */
    // "strictBindCallApply": true,                 /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
    // "strictPropertyInitialization": true,        /* Enable strict checking of property initialization in classes. */
    // "noImplicitThis": true,                      /* Raise error on 'this' expressions with an implied 'any' type. */
    // "alwaysStrict": true,                        /* Parse in strict mode and emit "use strict" for each source file. */
    - noImplicitAny ... 暗黙のany型だめだよオプション
    - strictNullChecks... 一般的な型はnullを含んでいるのがデフォルト。このオプションをtrueにした場合、組み込み型に対してnullやundifindを許容しない。許容したい場合は明示する必要がある。
    - strictFunctionTypes... 型チェックの双変性のゆるさを解消する。(class Dog extends Animal {}があったとして、Animal型を引数に取る関数に対して、Dog変数も入れることができてしまい、結果としてAnimal型の別のサブクラスであるCat型の変数も入れることができてしまうというケース。
    - strictBindCallApply bind, call, applyに対しての規制。型チェックや引数チェックを行う。
    - strictPropertyInitialization...クラス初期化時の厳密な型チェック
    - alwaysStrict ... コンパイル時に各ファイルにuseStrictをつける。
  • Additional Checks よりきれいなコードを書くための設定郡。eslintで大体カバーされてる?気がする。

  • include

    • includeを指定することによって、コンパイル対象のファイルを明示することができる。
  • exclude

    • excludeを指定することによって、コンパイルしないファイルを明示することができる。有効化していない場合は、デフォルトでnode_modeulesディレクトリ以下が対象になっている。有効にした場合はnode_modeulesも明示する必要がある。

excludeのほうが強い。index - excludeの式で表される。ファイルの指定方法にはワイルドカードを使用することができ、~のディレクトリ以下全てのような指定方法ができる

  • files

    • 上述2種とは違って、ワイルドカード指定はできない。ファイル指定でコンパイル対象を明示する。
  • lib

    •  TypeScriptが用意している型定義を見てコンパイルする。typescrpt入れたときに型情報を見てる。lib.es5.d.tsとか。有効化すると、デフォルトのコアライブラリは指定対象外になるので、必要であれば明示しなくてはいけない。有効化していない場合はtarget内容によって変わる。
    •  例えば、targetがes6の場合は、デフォルトで下記が有効になっている。
    "lib":[
    "ES6",
    "DOM",
    "DOM.Iterable",
    "ScriptHost"
    ]
  • allowjs

    • jsファイルをコンパイル対象にするかどうか。後述するCheckJsと併用したり、outdirでディレクトリを分けたりして使う。
  • checkJs

    • jsファイルのコンパイル時にも、ソースコードチェックを行う。
  • declaration

    • 型定義ファイルを生成する。.d.tsの拡張子。コンパイルしたjsに対しての型情報が入ったファイル。主にライブラリ公開のときなどには必須。
  • declarationMap

    • 型定義のmapファイルが生成される。上述のdeclarationと併用する。このmapファイルが存在すると、エディタで定義元にジャンプした際に、型定義フィルではなく、実際のコードに飛んでくれる。