Las primitivas BigInt son una agregación relativamente nueva a JavaScript, lo que permite operaciones matemáticas en números fuera del rango permitido por Number
. Para crear un BigInt, agrega n
al final de un literal de número o pasa un valor de cadena entero o numérico a la función BigInt()
.
const myNumber = 9999999999999999;
const myBigInt = 9999999999999999n;
typeof myNumber;
> "number"
typeof myBigInt;
> "bigint"
myNumber;
> 10000000000000000
myBigInt;
> 9999999999999999n
En este ejemplo, 9999999999999999
está fuera del rango de dígitos que Number
puede representar de forma segura, lo que genera un error de redondeo.
Los valores de BigInt no heredan los métodos ni las propiedades que proporciona el objeto Number
, y no se pueden usar con los métodos que proporciona el objeto Math
integrado de JavaScript. Lo más importante es que no puedes mezclar las primitivas BigInt y Number en operaciones aritméticas estándar:
9999999999999999n + 5
> Uncaught TypeError: can't convert BigInt to number
Para realizar aritmética con BigInt, debes definir ambos operandos como valores de BigInt:
console.log( 9999999999999999 + 10 ); // Off by one
> 10000000000000010
console.log( 9999999999999999n + 10n );
> 10000000000000009n