Spec-Zone.ru › ESLint

computed-property-spacing

Обеспечивает единообразное форматирование пробелов внутри скобок вычисляемых свойств

🔧 Исправляемое

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

Важно

Это правило было объявлено устаревшим в ESLint v8.53.0. Оно будет удалено в v11.0.0. Используйте соответствующее правило из @stylistic/eslint-plugin.

Подробнее

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

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