TypeError: невозможно преобразовать BigInt в число
Исключение JavaScript "can't convert BigInt to number" (невозможно преобразовать BigInt в число) возникает, когда арифметическая операция включает смешанные значения BigInt и Number.
Сообщение
TypeError: Cannot convert a BigInt value to a number (V8-based) TypeError: Cannot mix BigInt and other types, use explicit conversions (V8-based) TypeError: BigInts have no unsigned right shift, use >> instead (V8-based) TypeError: can't convert BigInt to number (Firefox) TypeError: Conversion from 'BigInt' to 'number' is not allowed. (Safari) TypeError: Invalid mix of BigInt and other type in addition/multiplication/…. (Safari) TypeError: BigInt does not support >>> operator (Safari)
Тип ошибки
Что пошло не так?
Обе стороны арифметического оператора должны быть либо BigInts, либо не быть BigInts. Если операция включает смешанные BigInts и числа, неоднозначно, должен ли результат быть BigInt или числом, поскольку в обоих случаях возможна потеря точности.
Ошибка также возникает, когда BigInt неявно преобразуется в число посредством процесса приведения к числу. Например, если BigInt передается встроенному методу, который ожидает число.
Ошибка также может произойти, если оператор беззнакового правого сдвига (>>>) используется между двумя BigInts. В Firefox сообщение то же самое: "can't convert BigInt to number".
Примеры
Смешивание чисел и BigInts в операциях
const sum = 1n + 1; // TypeError: can't convert BigInt to number
Вместо этого явно приведите одну сторону к BigInt или числу.
const sum = 1n + BigInt(1); const sum2 = Number(1n) + 1;
Использование беззнакового правого сдвига с BigInts
const a = 4n >>> 2n; // TypeError: can't convert BigInt to number
Используйте вместо этого обычный правый сдвиг.
const a = 4n >> 2n;
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_convert_BigInt_to_number