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
がある ↩