SyntaxError: геттер и сеттер для приватного имени #x должны быть либо оба static, либо не static
JavaScript-исключение "mismatched placement" возникает, когда приватный геттер и сеттер не совпадают по наличию static.
Сообщение
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)
Тип ошибки
Что пошло не так?
Приватные геттеры и сеттеры для одного и того же имени должны быть либо оба static, либо оба не static. Это ограничение не существует для публичных методов.
Примеры
Несоответствующее размещение
class Test {
static set #foo(_) {}
get #foo() {}
}
// SyntaxError: getter and setter for private name #foo should either be both static or non-static
Поскольку foo является приватным, методы должны быть либо оба static:
class Test {
static set #foo(_) {}
static get #foo() {}
}
либо не static:
class Test {
set #foo(_) {}
get #foo() {}
}
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Either_be_both_static_or_non-static