UNB/ CS/ David Bremner/ teaching/ cs2613/ books/ mdn/ Reference/ Errors/ ""SyntaxError:

The JavaScript exception "mismatched placement" occurs when a private getter and setter are mismatched in whether or not they are static.

Message

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)

Error type

SyntaxError

What went wrong?

Private getters and setters for the same name must either be both static, or both non-static. This limitation does not exist for public methods.

Examples

Mismatched placement

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

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

Since foo is private, the methods must be either both static:

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

or non-static:

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

See also