TypeScript入門

tsconfigのきほん

設定ファイルは 1 枚だけ

TypeScript のプロジェクトには tsconfig.json という設定ファイルが 1 枚あります。tsc はこのファイルを読んで、どのファイルを、どのくらい厳しく検査するかを決めます。

最小限だと、これくらいの中身です。

{ "compilerOptions": { "target": "ES2020", "strict": true } }

項目はたくさんありますが、いま覚える価値があるのは strict の 1 つだけです。

strict は厳しさのまとめスイッチ

strict は単独の設定ではなく、細かい検査をまとめて入り切りするスイッチです。中でも効くのが次の 2 つです。

1 つ目は noImplicitAny です。型を書かなかった引数が黙って any になるのを禁止します。2 つ目は strictNullChecks です。nullundefined が入るかもしれない値を、そのまま使うのを禁止します。

このコースはずっと strict を on にした状態で進めてきました。第1章から「引数に型が無いとエラーになる」と言ってきたのは、この設定のおかげです。

off と on で見比べる

同じコードが、設定ひとつでこれだけ変わります。

function workLabel(title, count) { return title + "ほか" + count + "件"; } const nickname: string | null = null; console.log(nickname.trim());

strict が off のときは、どちらの行も何も言われません。titlecountany になり、nickname.trim() は実行時に落ちます。

strict を on にすると、その場で 3 つ指摘されます。

Parameter 'title' implicitly has an 'any' type. Parameter 'count' implicitly has an 'any' type. 'nickname' is possibly 'null'.

どれも、off のときは動いてから壊れていた事故です。

最初から on にしておく

新しく作るプロジェクトは、必ず strict: true で始めてください。あとから on にすると、それまでに書いたコード全部からエラーが噴き出して、手が付けられなくなります。

逆に、すでにある JavaScript を移していく場合は、一時的に緩めることもあります。その進め方が次のレッスンの話です。

手を動かす

手元のエディタで tsconfig.jsonstrictfalse にして、上のコードを貼ってみてください。赤い波線が消えます。そのあと true に戻して、波線が戻ることを確かめます。型がどこまで守ってくれるかは、自分で決められる、というのが今回の要点です。

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部