BigInt

Os primitivos BigInt são uma adição relativamente nova ao JavaScript, permitindo operações matemáticas em números fora do intervalo permitido por Number. Para criar um BigInt, anexe n ao final de um literal numérico ou transmita um valor de string inteiro ou numérico para a função BigInt().

const myNumber = 9999999999999999;
const myBigInt = 9999999999999999n;

typeof myNumber;
> "number"

typeof myBigInt;
> "bigint"

myNumber;
> 10000000000000000

myBigInt;
> 9999999999999999n

Neste exemplo, 9999999999999999 está fora do intervalo de dígitos que pode ser representado com segurança por Number, causando um erro de arredondamento.

Os valores BigInt não herdam os métodos e as propriedades pelo objeto Number fornecido e não podem ser usados com os métodos que o objeto Math integrado do JavaScript fornece. Mais importante ainda, não é possível misturar primitivas BigInt e Number em operações aritméticas padrão:

9999999999999999n + 5
> Uncaught TypeError: can't convert BigInt to number

Para fazer aritmética com BigInts, você precisa definir os dois operandos como valores BigInt:

console.log( 9999999999999999 + 10 );  // Off by one
> 10000000000000010

console.log( 9999999999999999n + 10n );
> 10000000000000009n