Spec-Zone.ru › ESLint

keyword-spacing

Принудительно выдерживать одинаковый отступ до и после ключевых слов

🔧 Исправимо

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

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

Ключевые слова — это элементы синтаксиса 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 }:

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

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

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

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

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

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

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

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

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

after

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

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

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

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

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

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

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

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

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

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

переопределения

Примеры правильного кода для этого правила с параметром { "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