BigInt в JavaScript
Тип большого целого BigInt — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный
примитив «число».
Этот тип используют для работы с произвольно большими целыми числами: идентификаторами, криптографическими ключами и другими данными, где требуется высокая точность.
Создать BigInt можно двумя способами:
1. Добавить суффикс n в конец записи числа
const biggy = 9997000254740991n
2. Вызвать конструктор BigInt
const alsoBig = BigInt(9997000254999999)
BigInt поддерживает, например, операции сложения +, вычитания -, умножения *, взятия остатка от деления %, возведения в степень **.
Операция деления / также работает, но дробная часть отбросится:
const seven = 7n
const five = 5n
console.log(seven / five)
// 1
BigInt не сериализуется в JSON, то есть не переводится в последовательность битов. Это усложняет использование данного типа данных в задачах взаимодействия с сервером.
Преобразование типов
В операциях BigInt невозможно использовать напрямую с обычными числами типа number: это приведёт к ошибке.
const biggy = 10n
const number = 5
console.log(biggy + number)
// Uncaught TypeError: Cannot mix BigInt and other types,
// use explicit conversions
Чтобы провести операции между BigInt и обычными числами, их нужно явно преобразовать. Например:
const biggy = 10n
const number = 5
console.log(biggy + BigInt(number))
// 15n
console.log(Number(biggy) + number)
// 15
Ограничения
Нет поддержки дробных чисел. BigInt работает только с целыми числами. Дробные числа нельзя использовать с этим типом данных.
Ограниченная поддержка в браузерах. Хотя BigInt поддерживается большинством браузеров, старые версии могут не поддерживать этот тип.
В BigInt не поддерживаются операции унарного плюса и сдвига битов вправо.
👉 @seniorFront