Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
TypeError: kann BigInt nicht in number umwandeln
Die JavaScript-Ausnahme "kann BigInt nicht in number umwandeln" tritt auf, wenn eine arithmetische Operation eine Mischung ausBigInt undNumber Werten enthält.
In diesem Artikel
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 dennumber 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 derUnsigned 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 numberStattdessen 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 numberVerwenden Sie stattdessen den normalen Right Shift.
const a = 4n >> 2n;