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: "x" is not a non-null object
Message
TypeError: Invalid descriptor for property {x} (Edge)TypeError: "x" is not a non-null object (Firefox)TypeError: Property description must be an object: "x" (Chrome)TypeError: Invalid value used in weak set (Chrome)Dans cet article
Type d'erreur
TypeErrorQuel est le problème ?
Un objet devrait être trouvé et n'est pas fourni. La valeurnull n'est pas un objet et ne fonctionnera pas, il est nécessaire de fournir un véritable objet pour que le code en question fonctionne.
Exemples
>Absence d'un descripteur de propriété
Lorsqu'on utilise des méthodes telles queObject.create(),Object.defineProperty() ouObject.defineProperties(), le paramètre optionnel de description des propriétés doit être un descripteur sous la forme d'un objet. Si la valeur fournie n'est pas un objet (mais par exemple un nombre), l'appel à la méthode déclenchera une erreur :
Object.defineProperty({}, "cle", 1);// TypeError: 1 is not a non-null objectObject.defineProperty({}, "cle", null);// TypeError: null is not a non-null objectUn descripteur de propriété valide aura la structure suivante :
Object.defineProperty({}, "cle", { value: "toto", writable: false });Les clés deWeakMap etWeakSet sont des objets
Les objetsWeakMap etWeakSet utilisent des objets comme clé. On ne peut pas utiliser d'autres types de valeurs pour les clés de ces objets.
var ws = new WeakSet();ws.add("toto");// TypeError: "toto" is not a non-null objectÀ la place, on utilisera des objets :
ws.add({ toto: "truc" });ws.add(window);