コンパイル
.tsファイルを.jsファイルへコンパイルする場合はtscコマンドを使用する。
tsc index.ts create.ts
複数ファイルのコンパイルは上記の方法でも可能だが、下記コマンドでtsconfig.jsonを作成することでよりシンプルなコマンドでコンパイルできる。
$ tsc --init
Created a new tsconfig.json with:
TS
target: es2016
module: commonjs
strict: true
esModuleInterop: true
skipLibCheck: true
forceConsistentCasingInFileNames: true
You can learn more at https://aka.ms/tsconfig.json
これで下記コマンドだけで複数ファイルをコンパイルできる。
* -wはウォッチモード
tsc -w
tsconfig.json
"exclude": [
"compiler.ts",
"*.spec.ts",
// どのフォルダにあるcompiler.tsもコンパイルしない
"**/compiler.ts",
// デフォルトでTypescriptはnode_modulesをコンパイルしないが、
// excludeを一つでも定義するとコンパイルされてしまうためこの設定が必要
"node_modules"
]
includeはコンパイルするファイルを指定することができる。
fileはワイルドカードが指定できない。相対パスか絶対パスのみ。
target
ES6など、どのバージョンでコンパイルするか指定できる
lib
ES6やDOMなど、TypeScriptが用意している型定義を追加することができる。
let hello = "hello";
console.log(hello.toUpperCase());
toUpperCase()はlibファイルの中で定義されている。
TypeScriptがコンパイルすることによってこのメソッドが使える。
libをコメントアウトした場合、targetに指定したバージョンに必要なlibが自動でコンパイルされる。
"target": "es6",
"lib": [],
上のようにlibに何も指定しない場合、Typescript上で「toUpperCase()が使えない」「consoleは定義されていない」といったエラーが発生してしまう。
sourceMap
trueにした場合、mapファイルを生成することができる。
mapファイルがあると検証ツールを使用してブラウザ上でTypeScriptが確認できる。
outDir
ファイルの出力先を指定
rootDir
ルートディレクトリを指定
removeComments
コメントをjsファイルへ出力しない
noEmit
jsファイルを出力しない。作成したtsファイルに誤りがないか、エラーのみを出力する。
問題なければ何も出力されない。
noEmitOnError
エラーが発生した場合はtsファイルを出力しない
strictNullChecks
string型(numberなど他の型も同じ)にnull、undefinedは定義できないように設定できる。
union型だと定義できる。
// NG
let string: string = null;
// OK
let string3: string | null = null;