Spec-Zone.ru › ESLint

обработанное-свойство-отступы

Обеспечить согласованное расстояние внутри скобок обработанного свойства

🔧 Исправимые

Некоторые проблемы, обнаруженные этим правилом, автоматически исправляются с помощью --fix командной строки опции

Это правило было устарело в ESLint v8.53.0. Пожалуйста, используйте соответствующее правило в @stylistic/eslint-plugin-js.

Хотя предпочтения форматирования очень индивидуальны, ряд руководств по стилю требуют или запрещают пробелы между обработанными свойствами в следующих ситуациях:

var obj = { prop: "value" };
var a = "prop";
var x = obj[a]; // computed property in object member expression

var a = "prop";
var obj = {
  [a]: "value" // computed property key in object literal (ECMAScript 6)
};

var obj = { prop: "value" };
var a = "prop";
var { [a]: x } = obj; // computed property key in object destructuring pattern (ECMAScript 6)

Подробное описание правила

Это правило обеспечивает согласованное расстояние внутри скобок обработанного свойства.

Это правило требует или запрещает пробелы между скобками и значениями внутри них. Это правило не применяется к скобкам, отделенным от соседнего значения новой строкой.

Параметры

Это правило имеет два параметра: строковый и объектный.

Строковый параметр:

  • "never" (по умолчанию) запрещает пробелы внутри скобок обработанного свойства
  • "always" требует один или несколько пробелов внутри скобок обработанного свойства

Объектный параметр:

  • "enforceForClassMembers": true (по умолчанию) дополнительно применяет это правило к членам класса.

never

Примеры некорректного кода для этого правила с параметром "never" по умолчанию:

Открыть в Playground
/*eslint computed-property-spacing: ["error", "never"]*/

obj[foo]
obj['foo']
var x = {[b]: a}
obj[foo[bar]]

const { [a]: someProp } = obj;
({ [b]: anotherProp } = anotherObj);

Примеры корректного кода для этого правила с параметром "never" по умолчанию:

Открыть в Playground
/*eslint computed-property-spacing: ["error", "never"]*/

obj[foo]
obj['foo']
var x = {[b]: a}
obj[foo[bar]]

const { [a]: someProp } = obj;
({ [b]: anotherProp } = anotherObj);

always

Примеры некорректного кода для этого правила с параметром "always":

Открыть в Playground
/*eslint computed-property-spacing: ["error", "always"]*/

obj[foo]
var x = {[b]: a}
obj[ foo]
obj['foo' ]
obj[foo[ bar ]]
var x = {[ b]: a}
const { [a]: someProp } = obj;
({ [b ]: anotherProp } = anotherObj);

Примеры корректного кода для этого правила с параметром "always":

Открыть в Playground
/*eslint computed-property-spacing: ["error", "always"]*/

obj[ foo ]
obj[ 'foo' ]
var x = {[ b ]: a}
obj[ foo[ bar ] ]
const { [ a ]: someProp } = obj;
({ [ b ]: anotherProp } = anotherObj);

enforceForClassMembers

При enforceForClassMembers установлено в true (по умолчанию), правило также запрещает/обязательно пробелы внутри вычисленных ключей методов, геттеров и сетеров класса.

Примеры некорректного кода для этого правила с "never" и { "enforceForClassMembers": true } (по умолчанию):

Открыть в Playground
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/

class Foo {
  [a]() {}
  get [b]() {}
  set [b](value) {}
}

const Bar = class {
  [a](){}
  static [b]() {}
  static get [c]() {}
  static set [c](value) {}
}

Примеры корректного кода для этого правила с "never" и { "enforceForClassMembers": true } (по умолчанию):

Открыть в Playground
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/

class Foo {
  [a]() {}
  get [b]() {}
  set [b](value) {}
}

const Bar = class {
  [a](){}
  static [b]() {}
  static get [c]() {}
  static set [c](value) {}
}

Примеры корректного кода для этого правила с "never" и { "enforceForClassMembers": false }:

Открыть в Playground
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": false }]*/

class Foo {
  [a ]() {}
  get [b ]() {}
  set [b ](value) {}
}

const Bar = class {
  [ a](){}
  static [ b]() {}
  static get [ c ]() {}
  static set [ c ](value) {}
}

Когда не следует его использовать

Вы можете отключить это правило, если не обеспокоены согласованностью обработанных свойств.

Связанные правила

  • array-bracket-spacing
  • comma-spacing
  • space-in-parens

Версия

Это правило было введено в ESLint v0.23.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/computed-property-spacing

Spec-Zone.ru

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