TypeError: kann BigInt nicht in number umwandeln
Die JavaScript-Ausnahme "kann BigInt nicht in number umwandeln" tritt auf, wenn eine arithmetische Operation eine Mischung aus BigInt
und Number
Werten enthält.
Nachricht
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)
Fehlertyp
Was ist schiefgelaufen?
Die beiden Operanden eines arithmetischen Operators müssen entweder beide BigInts oder beide keine BigInts sein. Wenn eine Operation eine Mischung aus BigInts und Zahlen beinhaltet, ist es unklar, ob das Ergebnis ein BigInt oder eine Zahl sein soll, da in beiden Fällen Präzisionsverluste auftreten können.
Der Fehler tritt auch auf, wenn ein BigInt implizit durch den number coercion-Prozess in eine Zahl umgewandelt wird. Beispielsweise, wenn ein BigInt in eine eingebaute Methode übergeben wird, die eine Zahl erwartet.
Der Fehler kann auch auftreten, wenn der Unsigned Right Shift-Operator (>>>
) zwischen zwei BigInts verwendet wird. In Firefox ist die Nachricht dieselbe: "kann BigInt nicht in number umwandeln".
Beispiele
Mischung von Zahlen und BigInts in Operationen
const sum = 1n + 1;
// TypeError: can't convert BigInt to number
Stattdessen explizit eine Seite zu einem BigInt oder einer Zahl umwandeln.
const sum = 1n + BigInt(1);
const sum2 = Number(1n) + 1;
Verwendung des Unsigned Right Shifts bei BigInts
const a = 4n >>> 2n;
// TypeError: can't convert BigInt to number
Verwenden Sie stattdessen den normalen Right Shift.
const a = 4n >> 2n;