TypeError: WeakSet-Schlüssel/WeakMap-Wert 'x' muss ein Objekt oder ein nicht registriertes Symbol sein
Der JavaScript-Ausnahmefehler "WeakSet key (oder WeakMap value) 'x' must be an object or an unregistered symbol" tritt auf, wenn ein Wert eines ungültigen Typs als Schlüssel in einem WeakSet
oder als Wert in einer WeakMap
verwendet wird.
Nachricht
TypeError: Invalid value used as weak map key (V8-based) TypeError: WeakMap key 1 must be an object or an unregistered symbol (Firefox) TypeError: WeakMap keys must be objects or non-registered symbols (Safari) TypeError: Invalid value used in weak set (V8-based) TypeError: WeakSet value 1 must be an object or an unregistered symbol (Firefox) TypeError: WeakSet values must be objects or non-registered symbols (Safari)
Fehlertyp
Was ist schiefgegangen?
WeakSet
und WeakMap
erfordern, dass die Schlüssel garbage collectable sind. Nur Objekte und nicht registrierte Symbole (das heißt, Symbole, die nicht durch Symbol.for()
zurückgegeben werden) sind gültig. Weitere Informationen finden Sie unter Speicherverwaltung. Wenn Sie Schlüssel aus Zeichenketten, Zahlen oder anderen primitiven Werten hinzufügen möchten, sollten Sie diese stattdessen in einem normalen Set
oder Map
speichern.
Beispiele
Ungültige Fälle
new WeakSet().add(1); // TypeError
new WeakMap().set(1, {}); // TypeError
new WeakSet([1]); // TypeError
new WeakMap([[1, {}]]); // TypeError
Gültige Fälle
new WeakSet().add({}); // OK
new WeakMap().set({}, 1); // OK
new Set([1]); // OK
new Map([[1, {}]]); // OK