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" по умолчанию:
/*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" по умолчанию:
/*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":
/*eslint computed-property-spacing: ["error", "always"]*/
objfoo
var x = {b: a}
obj[ foo
obj'foo' ]
objfoo[ bar ]
var x = {[ b: a}
const { a: someProp } = obj;
({ b ]: anotherProp } = anotherObj);
Примеры правильного кода для этого правила с параметром "always":
/*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 } (по умолчанию):
/*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 } (по умолчанию):
/*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 }:
/*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) {}
}
Когда не следует использовать это правило
Вы можете отключить это правило, если единообразие форматирования вычисляемых свойств для вас не важно.
Связанные правила
Версия
Это правило появилось в ESLint v0.23.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/computed-property-spacing