Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
TypeError: can't convert x to BigInt
L'exception JavaScript"x can't be converted to BigInt" se produit lorsqu'on essaie de convertirun symbole,null, ouundefined en une valeurBigInt, ou si une opération qui s'applique à un paramètreBigInt reçoit un nombre.
Dans cet article
Message
TypeError: Cannot convert null to a BigInt (moteur JavaScript basé sur V8)TypeError: can't convert null to BigInt (Firefox)TypeError: Invalid argument type in ToBigInt operation (Safari)
Type d'erreur
Quel est le problème ?
Lorsqu'on utilise la fonctionBigInt() afin de convertir une valeur en grand entier, la valeur doit d'abord être convertie en une valeur primitive. Une fois cette conversion effectuée, si la valeur n'est pas un grand entier, une chaîne de caractères, un nombre ou un booléen, une erreur est levée.
Certaines opérations, commeBigInt.asIntN(), prennent uniquement un grand entier en paramètre, leur passer un nombre à la place déclenchera la même erreur.
Exemples
>UtiliserBigInt() sur des valeurs invalides
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);Note :Le simple fait de convertir la valeur en un nombre ou en une chaîne de caractères à l'aide deString() ouNumber() avant de la passer àBigInt() ne sera généralement pas suffisant pour éviter toutes les erreurs. En effet, si la chaîne n'est pas une chaîne de caractères valide pour décrire un nombre entier, c'est une exceptionSyntaxError qui sera levée ; si le nombre n'est pas un entier (c'est notamment le cas deNaN), c'est une exceptionRangeError qui sera levée. Si le domaine de la valeur d'entrée est inconnu, on veillera à la valider correctement avant d'utiliserBigInt().
Passer un nombre à une opération qui utilise un grand entier
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);