keyword-spacing
Обеспечивает единообразные пробелы перед ключевыми словами и после них
Некоторые проблемы, о которых сообщает это правило, можно автоматически исправить с помощью параметра командной строки --fix
Это правило было устаревшим в ESLint v8.53.0. Оно будет удалено в v11.0.0. Используйте соответствующее правило из @stylistic/eslint-plugin.
Ключевые слова — это синтаксические элементы JavaScript, такие как try и if. Эти ключевые слова имеют особое значение в языке, поэтому в редакторах кода они часто отображаются другим цветом. Будучи важной частью языка, ключевые слова часто упоминаются в руководствах по стилю, где описывается, какие пробелы следует использовать вокруг них. Например, в руководстве по стилю может быть указано, что ключевые слова всегда должны окружаться пробелами, а значит, операторы if-else должны выглядеть так:
if (foo) {
// ...
} else {
// ...
}
Разумеется, в руководстве по стилю также может быть указано, что пробелы вокруг ключевых слов не допускаются.
Однако, если вам нужно задать стиль пробелов между ключевым словом function и следующей за ним открывающей скобкой, обратитесь к правилу space-before-function-paren.
Подробное описание правила
Это правило обеспечивает единообразные пробелы вокруг ключевых слов и токенов, похожих на ключевые слова: as (в объявлениях модулей), async (у асинхронных функций), await (у выражений await), break, case, catch, class, const, continue, debugger, default, delete, do, else, export, extends, finally, for, from (в объявлениях модулей), function, get (у геттеров), if, import, in (в операторах for-in), let, new, of (в операторах for-of), return, set (у сеттеров), static, super, switch, this, throw, try, typeof, var, void, while, with и yield. Правило тщательно спроектировано так, чтобы не конфликтовать с другими правилами форматирования пробелов: оно не проверяет пробелы в тех случаях, когда о проблемах сообщают другие правила.
Параметры
Это правило принимает объект параметров:
-
"before": true(по умолчанию) требует как минимум один пробел перед ключевыми словами -
"before": falseзапрещает пробелы перед ключевыми словами -
"after": true(по умолчанию) требует как минимум один пробел после ключевых слов -
"after": falseзапрещает пробелы после ключевых слов -
"overrides"позволяет переопределять стиль пробелов для указанных ключевых слов
before
Примеры неправильного кода для этого правила с параметром { "before": true } по умолчанию:
/*eslint keyword-spacing: ["error", { "before": true }]*/
if (foo) {
//...
} if (bar) {
//...
} {
//...
}
Примеры правильного кода для этого правила с параметром { "before": true } по умолчанию:
/*eslint keyword-spacing: ["error", { "before": true }]*/
if (foo) {
//...
} else if (bar) {
//...
} else {
//...
}
// Avoid conflict with `array-bracket-spacing`
let a = [this];
let b = [function() {}];
// Avoid conflict with `arrow-spacing`
let c = ()=> this.foo;
// Avoid conflict with `block-spacing`
{function foo() {}}
// Avoid conflict with `comma-spacing`
let d = [100,this.foo, this.bar];
// Avoid conflict with `computed-property-spacing`
obj[this.foo] = 0;
// Avoid conflict with `generator-star-spacing`
function *bar() {}
// Avoid conflict with `key-spacing`
let obj1 = {
foo:function() {}
};
// Avoid conflict with `object-curly-spacing`
let obj2 = {foo: this};
// Avoid conflict with `semi-spacing`
let e = this;function foo() {}
// Avoid conflict with `space-in-parens`
(function () {})();
// Avoid conflict with `space-infix-ops`
if ("foo"in {foo: 0}) {}
if (10+this.foo<= this.bar) {}
// Avoid conflict with `jsx-curly-spacing`
let f = <A foo={this.foo} bar={function(){}} />
Примеры неправильного кода для этого правила с параметром { "before": false }:
/*eslint keyword-spacing: ["error", { "before": false }]*/
if (foo) {
//...
}else if (bar) {
//...
}else {
//...
}
Примеры правильного кода для этого правила с параметром { "before": false }:
/*eslint keyword-spacing: ["error", { "before": false }]*/
if (foo) {
//...
}else if (bar) {
//...
}else {
//...
}
after
Примеры неправильного кода для этого правила с параметром { "after": true } по умолчанию:
/*eslint keyword-spacing: ["error", { "after": true }]*/
(foo) {
//...
} else (bar) {
//...
} {
//...
}
Примеры правильного кода для этого правила с параметром { "after": true } по умолчанию:
/*eslint keyword-spacing: ["error", { "after": true }]*/
if (foo) {
//...
} else if (bar) {
//...
} else {
//...
}
// Avoid conflict with `array-bracket-spacing`
let a = [this];
// Avoid conflict with `arrow-spacing`
let b = ()=> this.foo;
// Avoid conflict with `comma-spacing`
let c = [100, this.foo, this.bar];
// Avoid conflict with `computed-property-spacing`
obj[this.foo] = 0;
// Avoid conflict with `generator-star-spacing`
function* foo() {}
// Avoid conflict with `key-spacing`
let obj1 = {
foo:function() {}
};
// Avoid conflict with `func-call-spacing`
class A extends B {
constructor() {
super();
}
}
// Avoid conflict with `object-curly-spacing`
let obj2 = {foo: this};
// Avoid conflict with `semi-spacing`
let d = this;function bar() {}
// Avoid conflict with `space-before-function-paren`
(function() {})();
// Avoid conflict with `space-infix-ops`
if ("foo"in{foo: 0}) {}
if (10+this.foo<= this.bar) {}
// Avoid conflict with `space-unary-ops`
function* baz(a) {
return yield+a;
}
// Avoid conflict with `yield-star-spacing`
function* qux(a) {
return yield* a;
}
// Avoid conflict with `jsx-curly-spacing`
let e = <A foo={this.foo} bar={function(){}} />
Примеры неправильного кода для этого правила с параметром { "after": false }:
/*eslint keyword-spacing: ["error", { "after": false }]*/
if(foo) {
//...
} else if(bar) {
//...
} else{
//...
}
Примеры правильного кода для этого правила с параметром { "after": false }:
/*eslint keyword-spacing: ["error", { "after": false }]*/
if(foo) {
//...
} else if(bar) {
//...
} else{
//...
}
overrides
Примеры правильного кода для этого правила с параметром { "overrides": { "if": { "after": false }, "for": { "after": false }, "while": { "after": false }, "static": { "after": false }, "as": { "after": false } } }:
/*eslint keyword-spacing: ["error", { "overrides": {
"if": { "after": false },
"for": { "after": false },
"while": { "after": false },
"static": { "after": false },
"as": { "after": false }
} }]*/
if(foo) {
//...
} else if(bar) {
//...
} else {
//...
}
for(;;);
while(true) {
//...
}
class C {
static{
//...
}
}
export { C as"my class" };
Когда не следует использовать это правило
Если вам не нужно обеспечивать единообразие пробелов вокруг ключевых слов, это правило можно отключить.
Версия
Это правило появилось в ESLint v2.0.0-beta.1.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/keyword-spacing