Spec-Zone.ru › JavaScript

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)

Тип ошибки

SyntaxError

Что пошло не так?

Приватные геттеры и сеттеры для одного и того же имени должны быть либо оба 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() {}
}

См. также

  • get
  • set
  • static
  • Приватные элементы

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API