メインコンテンツまでスキップ

strictNullChecks

リリースされたバージョン: 2.1

このオプションがなかったころは言語的に nullundefined を無視していました。つまり、次のようなことが問題なくできました。

typescript
const date: Date = null;
const error: Error = undefined;
typescript
const date: Date = null;
const error: Error = undefined;

当然ながら null には getDay() というプロパティは存在せず undefined には message というメソッドが存在しません。これらを呼び出そうとすると実行時エラーになります。

typescript
date.getDay();
// TypeError: Cannot read property 'getDay' of null
error.message;
// TypeError: Cannot read property 'message' of undefined
typescript
date.getDay();
// TypeError: Cannot read property 'getDay' of null
error.message;
// TypeError: Cannot read property 'message' of undefined

このオプションを有効にすると undefinednull はそれぞれ独立した型を持つようになり undefinednull を他の型に代入することはできなくなります。

text
error TS2322: Type 'undefined' is not assignable to type 'Error'. const error: Error = undefined; ~~~~~ error TS2322: Type 'null' is not assignable to type 'Date'. const date: Date = null; ~~~~
text
error TS2322: Type 'undefined' is not assignable to type 'Error'. const error: Error = undefined; ~~~~~ error TS2322: Type 'null' is not assignable to type 'Date'. const date: Date = null; ~~~~