Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
TypeError: kann x nicht in BigInt umwandeln
Die JavaScript-Ausnahme "x kann nicht in BigInt umgewandelt werden" tritt auf, wenn versucht wird, einenSymbol,null oder einenundefined Wert in einenBigInt zu konvertieren, oder wenn eine Operation, die einen BigInt-Parameter erwartet, stattdessen eine Zahl erhält.
In diesem Artikel
Meldung
TypeError: Cannot convert null to a BigInt (V8-based)TypeError: can't convert null to BigInt (Firefox)TypeError: Invalid argument type in ToBigInt operation (Safari)
Fehlerart
Was ist schiefgelaufen?
Bei der Verwendung derBigInt() Funktion zur Umwandlung eines Wertes in einen BigInt wird der Wert zunächst in einen primitiven Wert umgewandelt. Wenn er dann keiner der Typen BigInt, String, Number oder Boolean ist, wird der Fehler ausgelöst.
Einige Operationen, wie zum BeispielBigInt.asIntN, erfordern, dass der Parameter ein BigInt ist. In diesem Fall wird auch ein Fehler ausgelöst, wenn eine Zahl übergeben wird.
Beispiele
>Verwendung von BigInt() auf ungültigen Werten
const a = BigInt(null);// TypeError: can't convert null to BigIntconst b = BigInt(undefined);// TypeError: can't convert undefined to BigIntconst c = BigInt(Symbol("1"));// TypeError: can't convert Symbol("1") to BigIntconst a = BigInt(1);const b = BigInt(true);const c = BigInt("1");const d = BigInt(Symbol("1").description);Hinweis:Allein das Umwandeln des Wertes in einen String oder eine Zahl mitString() oderNumber() vor der Übergabe anBigInt() reicht normalerweise nicht aus, um alle Fehler zu vermeiden. Wenn der String keine gültige Ganzzahl-Zeichenkette ist, wird einSyntaxError ausgelöst; wenn die Zahl keine Ganzzahl ist (insbesondereNaN), wird einRangeError ausgelöst. Wenn der Bereich der Eingabe unbekannt ist, validieren Sie ihn ordnungsgemäß, bevor SieBigInt() verwenden.
Übergabe einer Zahl an eine Funktion, die einen BigInt erwartet
const a = BigInt.asIntN(4, 8);// TypeError: can't convert 8 to BigIntconst b = new BigInt64Array(3).fill(3);// TypeError: can't convert 3 to BigIntconst a = BigInt.asIntN(4, 8n);const b = new BigInt64Array(3).fill(3n);