TypeError: getting private setter-only property

Die JavaScript-Ausnahme "getting private setter-only property" tritt auf, wenn versucht wird, den Wert einer privaten Eigenschaft abzurufen, für die 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)

Fehlertyp

Was ist schiefgelaufen?

Es wird versucht, den Wert einer privaten Eigenschaft abzurufen, für die nur ein Setter angegeben ist. Im Gegensatz zu normalen Objekten, bei denen ein undefinierter Getter bedeutet, dass die Eigenschaft immer undefined zurückgeben würde, ist dies bei privaten Eigenschaften ein Fehler.

Beispiele

Private Eigenschaft ohne Getter

Hier hat #name keinen Getter, daher führt der Versuch, ihn mit this.#name zu lesen, zu einem Fehler.

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

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

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

Es ist nicht üblich, dass eine private Eigenschaft einen Setter ohne einen Getter hat. Entweder fügen Sie einen Getter hinzu oder überarbeiten Sie Ihr Programm, sodass der Setter ebenfalls entfernt werden kann.

Siehe auch