TypeError: kann x nicht in BigInt konvertieren
Die JavaScript-Ausnahme "x kann nicht in BigInt konvertiert werden" tritt auf, wenn versucht wird, einen Symbol
, null
oder einen undefined
-Wert in einen BigInt
zu konvertieren oder wenn ein Vorgang, der ein BigInt-Parameter erwartet, eine Zahl erhält.
Nachricht
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)
Fehlertyp
Was ist schiefgelaufen?
Bei der Verwendung der Funktion BigInt()
, um einen Wert in ein BigInt zu konvertieren, wird der Wert zunächst in einen primitiven Wert umgewandelt. Wenn es sich dabei nicht um BigInt, String, Number oder Boolean handelt, wird der Fehler ausgegeben.
Einige Operationen, wie zum Beispiel BigInt.asIntN
, erfordern, dass der Parameter ein BigInt ist. Wenn in diesem Fall eine Zahl übergeben wird, wird ebenfalls dieser Fehler ausgelöst.
Beispiele
Verwendung von BigInt() mit 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:
Einfaches Umwandeln des Wertes in einen String oder eine Zahl mit String()
oder Number()
, bevor er an BigInt()
übergeben wird, reicht in der Regel nicht aus, um alle Fehler zu vermeiden. Wenn der String keine gültige Ganzzahl-String-Darstellung ist, wird ein SyntaxError ausgegeben; wenn die Zahl keine Ganzzahl (insbesondere NaN
) ist, wird ein RangeError ausgelöst. Wenn der Bereich der Eingabedaten unbekannt ist, sollten diese ordnungsgemäß validiert werden, bevor BigInt()
verwendet wird.
Eine Zahl an eine Funktion übergeben, die ein 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);