SyntaxError: Getter und Setter für privaten Namen #x sollten entweder beide statisch oder nicht statisch sein

Die JavaScript-Ausnahme "mismatched placement" tritt auf, wenn ein privater Getter und Setter nicht übereinstimmen, ob sie static sind oder nicht.

Nachricht

SyntaxError: Identifier '#x' has already been declared (V8-based)
SyntaxError: getter and setter for private name #x should either be both static or non-static (Firefox)
SyntaxError: Cannot declare a private non-static getter if there is a static private setter with used name. (Safari)

Fehlertyp

Was ist schiefgelaufen?

Private Getter und Setter für denselben Namen müssen entweder beide static oder beide nicht statisch sein. Diese Einschränkung existiert nicht für öffentliche Methoden.

Beispiele

Mismatched placement

js
class Test {
  static set #foo(_) {}
  get #foo() {}
}

// SyntaxError: getter and setter for private name #foo should either be both static or non-static

Da foo privat ist, müssen die Methoden entweder beide static sein:

js
class Test {
  static set #foo(_) {}
  static get #foo() {}
}

oder nicht statisch:

js
class Test {
  set #foo(_) {}
  get #foo() {}
}

Siehe auch