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

js
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
js
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

js
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
js
const a = BigInt.asIntN(4, 8n);
const b = new BigInt64Array(3).fill(3n);

Siehe auch