項目2 どのTypeScriptオプションが使われているか把握する
TypeScriptオプション
設定ファイルを用いて管理する
tsc --initを実行してtsconfig.jsonを作成する
TypeScriptのコンパイラーは本書執筆時点でオプションが100以上存在している
オプションには以下の設定がある
ソースファイルを探す場所を制御
どのような生成を出力するかを制御
言語自体の核となる部分を制御
etc...
TypeScriptを効果的に使うために、最も重要なオプションは以下
noImplicitAny
strictNullChecks
noImplicitAny
https://typescriptbook.jp/reference/tsconfig/noimplicitany
noImplicitAnyは、ある変数の型が不明な場合にTypeScriptがどう振る舞うのかを制御する
noImplicitAnyがオフの場合は、下記のコードはエラーにならない。
code:ts
function add(a, b) {
return a + b;
}
不明な型はany型として扱われる(暗黙的なany)
any型にはコードの型チェックを無効にする効果があるため、使用には注意
TypeScriptを効果的に使うためには、noImplicitAnyを設定する
noImplicitAnyをオフにするのは、JavaScriptをTypeScriptに移行する場合にのみ適切
strictNullChecks
https://typescriptbook.jp/reference/tsconfig/strictnullchecks
strictNullChecksは、nullやundefindがすべての型の値として許容されるべきかを制御する
strictNullChecksがオフの場合は、下記のコードはエラーにならない
code:ts
const x: number = null
// 本来は下記のように型にnullが許容されることを明示する必要がある
const x: number | null = null
nullを許容したいくない場合は、nullチェックやアサーションを加える
code:ts
const statusEl = document.getElementById('status');
statusEl.textContent = 'Ready';
// ~~~~~ 'statusEl' is possibly 'null'.
// 'statusEl' は 'null' の可能性があります。
if (statusEl) {
statusEl.textContent = 'Ready'; // nullがチェックにより除外されているため、OK
}
statusEl!.textContent = 'Ready'; // 非nullアサーションが使われているため、OK
その他のオプション
noUncheckedIndexedAccess
オブジェクトや配列へのアクセスに関数エラーを補足する
code:ts
const tenses = 'past', 'present', 'future';
tenses3.toUpperCase();
// ~~~~~~ Object is possibly 'undefined'.
// オブジェクトは 'undefined' である可能性があります。
#TypeScript