TypeError: getting private setter-only property

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

Nachricht

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)

Fehlertyp

Was ist schiefgegangen?

Es wird versucht, den Wert eines privaten Elements zu ermitteln, für das nur ein Setter angegeben ist. Anders als bei normalen Objekten, bei denen ein undefinierter Getter lediglich bedeutet, dass die Eigenschaft immer undefined zurückgeben würde, ist dies bei privaten Elementen ein Fehler.

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 unüblich, dass ein privates Element einen Setter ohne einen Getter hat. Entweder fügen Sie einen Getter hinzu oder refaktorisieren Sie Ihr Programm so, dass der Setter ebenfalls entfernt werden kann.

Siehe auch