BigIntは、任意の精度で整数値を扱える型です。数値の末尾に n を付けることで、BigInt型の数値として定義できます。Number型は、-(253 - 1) から 253 - 1 までの数値しか表せず、その範囲を超える数値の場合には値が丸め込まれます。一方、BigIntの場合には、Number型では表せない値の範囲を表現できます。
Number型とBigInt型
// Number型では正常処理の範囲外のため、誤った値が表示される
console.log( 2 ** 53 + 1 );
> 9007199254740992 ----- 誤った値が表示される!
// BigInt型であれば問題なく表示可能
console.log( 2n ** 53n + 1n );
> 9007199254740993n ----- 正しい値が表示される!
なお、BigInt型と Number型は、混在して使用できないため、注意してください。
BigInt型と Number型は混在して使用できない
let num = 2;
let bi = 3n;
console.log( num * bi );
// エラーが発生!
> Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions
[意訳] 型に関するエラー:BigInt型と他の型を混ぜることはできません。
また、BigIntは、あくまで整数値を表す型になるため、小数点以下の値は切り捨てられます。
BigIntは小数点以下切り捨て
let three = 3n;
let five = 5n;
console.log( five / three );
> 1n ----- 1.666..小数点以下は切り捨てられる