Spec-Zone.ru › ESLint

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 } по умолчанию:

Открыть в Playground
/*eslint keyword-spacing: ["error", { "before": true }]*/

if (foo) {
    //...
}else if (bar) {
    //...
}else {
    //...
}

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

Открыть в Playground
/*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 }:

Открыть в Playground
/*eslint keyword-spacing: ["error", { "before": false }]*/

if (foo) {
    //...
}else if (bar) {
    //...
}else {
    //...
}

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

Открыть в Playground
/*eslint keyword-spacing: ["error", { "before": false }]*/

if (foo) {
    //...
}else if (bar) {
    //...
}else {
    //...
}

after

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

Открыть в Playground
/*eslint keyword-spacing: ["error", { "after": true }]*/

if(foo) {
    //...
} else if(bar) {
    //...
} else{
    //...
}

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

Открыть в Playground
/*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 }:

Открыть в Playground
/*eslint keyword-spacing: ["error", { "after": false }]*/

if(foo) {
    //...
} else if(bar) {
    //...
} else{
    //...
}

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

Открыть в Playground
/*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 } } }:

Открыть в Playground
/*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

Spec-Zone.ru

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