TypeError: kann x nicht in BigInt umwandeln
Die JavaScript-Ausnahme "x kann nicht in BigInt umgewandelt werden" tritt auf, wenn versucht wird, einen Symbol
, null
oder einen undefined
Wert in einen BigInt
zu konvertieren, oder wenn eine Operation, die einen BigInt-Parameter erwartet, stattdessen eine Zahl erhält.
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 der BigInt()
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 Beispiel BigInt.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 BigInt
const b = BigInt(undefined);
// TypeError: can't convert undefined to BigInt
const c = BigInt(Symbol("1"));
// TypeError: can't convert Symbol("1") to BigInt
const 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 mit String()
oder Number()
vor der Übergabe an BigInt()
reicht normalerweise nicht aus, um alle Fehler zu vermeiden. Wenn der String keine gültige Ganzzahl-Zeichenkette ist, wird ein SyntaxError ausgelöst; wenn die Zahl keine Ganzzahl ist (insbesondere NaN
), wird ein RangeError ausgelöst. Wenn der Bereich der Eingabe unbekannt ist, validieren Sie ihn ordnungsgemäß, bevor Sie BigInt()
verwenden.
Übergabe einer Zahl an eine Funktion, die einen BigInt erwartet
const a = BigInt.asIntN(4, 8);
// TypeError: can't convert 8 to BigInt
const b = new BigInt64Array(3).fill(3);
// TypeError: can't convert 3 to BigInt
const a = BigInt.asIntN(4, 8n);
const b = new BigInt64Array(3).fill(3n);