TypeError: getting private setter-only property

Die JavaScript-Ausnahme "getting private setter-only property" tritt auf, wenn versucht wird, den Wert eines privaten Elements zu lesen, für das nur ein Setter definiert ist.

Meldung

TypeError: '#x' was defined without a getter (V8-based)
TypeError: getting private setter-only property (Firefox)
TypeError: Trying to access an undefined private getter (Safari)

Fehlerart

Was ist schiefgelaufen?

Es wird versucht, den Wert eines privaten Elements abzurufen, für das nur ein Setter angegeben ist. Im Gegensatz zu normalen Objekten, bei denen ein nicht definierter Getter bedeutet, dass die Eigenschaft immer undefined zurückgibt, stellt dies bei privaten Elementen einen Fehler dar.

Beispiele

Privates Element ohne Getter

Hier hat #name keinen Getter, sodass der Versuch, es mit this.#name zu lesen, einen Fehler auslöst.

js
class Person {
  set #name(value) {}

  get name() {
    return this.#name;
  }
}

const person = new Person();
console.log(person.name);

Es ist ungewöhnlich, dass ein privates Element einen Setter ohne einen Getter hat. Fügen Sie entweder einen Getter hinzu oder refaktorieren Sie Ihr Programm so, dass der Setter ebenfalls entfernt werden kann.

Siehe auch