tsconfig.jsonとは
typescriptはtrans filerなので、ブラウザーで実行させるためにはjsファイルへの変換が必要です。変換する中で色々なoptionを付与することができます。
tsconfig.jsonにはTypescriptを動かすためのoptionを定義をします。
どの機能(option)を無・有効にするかをtsconfig.jsonで定義できます。 沢山の機能がありますが、以下のデフォルトoptionで問題ありません。
tsconfig.jsonには何が?
{
"compilerOptions": {
"strict": true,
"lib": [
"ES2016",
"dom"
],
"module": "CommonJS",
"alwaysStrict": true,
"noImplicitAny": true,
"noImplicitThis": true,
"sourceMap": true,
"downlevelIteration": true
}
}
・strict
typescript機能をどれぐらい厳しく適用させるかを定義。
Typescriptが提供する機能の中、一番核心的なものはTYPE拡張です。基本的にjsはtypeを記述していません。
jsは状況的にデータのtypeを判断し、自動変換が行われるゆるい体系です。
大規模のpjでjsをtsに変えようとした時に、最初から大量のデータにtypeを付けることは難しいです。
しかし、strictにfalseを付けることにより、plain jsファイルでも問題なく動作し、
最初は1/4・・・次は2/4・・・のようにバッファーを取りながら作業が可能になります。
trueにした場合は、compilerがこの部分はこのように直せと情報を教えます。
・noImplicitAny
strictの下部optionのひつと。jsのtypeは記述していないためcompilerはこれが何のtypeがわからないです。なので、tsで基本的にいずれのtypeでもいいよという意味で"any"typeを付けますが、tureをすると、anyが付けられることができなく、明確にtypeを付けなければなりません。
・sourceMap
tsファイルを実行すると、tsをjsに変換した結果を出力するターゲットdirの中には**.jsと**.js.mapができます。
ここで、**.js.mapがsourceMapのファイルです。
実際に作成したコードはtsであり、browser上ではjsとして動いているので、もし問題が発生した際はcompileしたjs fileでは問題点を特定することはむずかしいかと思います。
ということで、問題点が分かるために原本ファイル(ts)と変換後のファイル(js)を結びつけさせるための連携情報を持っているファイルです。
sourceMap
tsconfig.jsonでsourceMapをtrueにして、tsファイルを実行した後のdist構成です。distのindex.html中身です。
srcにはtsをjsに変換したファイルが定義されています。
**.js.map中身の一部です。tsとjs間の連携情報が定義されています。
{"version":3,"sources":["src/core/router.ts","src/core/view.ts","src/core/api.ts","src/config.ts","src/page/news-detail-view.ts","src/page/news-feed-view.ts","src/page/index.ts","src/store.ts","src/app.ts","../../../../../../../../usr/local/lib/node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCal