SyntaxError: getter and setter for private name #x should either be both static or non-static
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
What went wrong?
Examples
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
Since foo
is private, the methods must be either both static
:
js
class Test {
static set #foo(_) {}
static get #foo() {}
}
or non-static:
js
class Test {
set #foo(_) {}
get #foo() {}
}