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