TypeScript には「値がない」という状態の表現として null と undefinedのふたつが存在します。
さらに、返す数値が存在しない表現として NaN があります。
これらの違いについてのまとめです。
null とは
- TypeScript のプリミティブ1のひとつ
- ただし
typeofではobjectを返す2console.log(typeof(null)); // "object"
- ただし
- 値がないという状況
- プリミティブなので
nullという型も存在するconst x:null = null;
undefined とは
- TypeScript のプリミティブのひとつ
console.log(typeof(undefined)); // "undefined" - 値が未定義という状況
- プリミティブなので
undefinedという型も存在するconst x:undefined = undefined;
NaN とは
-
NaNは Number 型に存在する特殊な値console.log(typeof(NaN)); // "number" - 数値が必要な場面で数値が得られなかった場合に出現
- 数値を表すものではない
-
NaNを含んだ等価演算式、比較演算子では必ずfalseを返すconst x = NaN; console.log(x === 100); // false console.log(x > 100); // false console.log(x < 100); // false // === で NaN を判定することもできない console.log(x === NaN); // false -
NaNの判定するにはNumber.isNaN()を使用するconst x = NaN; console.log(Number.isNaN(x)); // true
TypeScript では null と undefined のどちらを使うべきなのか?
TypeScript のコーディング・ガイドライン では undefined の使用を推奨しています。
- Use
undefined. Do not use null. - https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#null-and-undefined
参考
- null - JavaScript - MDN Web Docs - Mozilla
- undefined - JavaScript - MDN Web Docs
- NaN - JavaScript - MDN Web Docs - Mozilla
-
プリミティブとは、TypeScript における基本的な値で、
string,number,boolean,bigint,null,undefined,symbolがある ↩