Spec-Zone.ru › ESLint

generator-star-spacing

Принудительное соблюдение согласованного отступа вокруг операторов * в функциях-генераторах

🔧 Исправимо

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

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

Генераторы — это новый тип функций в ECMAScript 6, которые могут возвращать несколько значений со временем. Эти специальные функции обозначаются размещением * после ключевого слова function.

Вот пример функции-генератора:

function* generator() {
    yield "44";
    yield "55";
}

Это также допустимо:

function *generator() {
    yield "44";
    yield "55";
}

Это тоже допустимо:

function * generator() {
    yield "44";
    yield "55";
}

Для поддержания согласованности при использовании генераторов это правило принуждает к единому расположению *.

Подробности правила

Это правило направлено на принуждение к соблюдению отступов вокруг * функций-генераторов.

Параметры

Правило принимает один параметр — объект, который имеет два ключа "before" и "after", имеющие логические значения true или false.

  • "before" принуждает к соблюдению отступа между * и ключевым словом function. Если оно true, требуется отступ, в противном случае отступы запрещены.

    В методах сокращенной записи объектов отступ перед * не проверяется, так как в них отсутствует ключевое слово function.

  • "after" принуждает к соблюдению отступа между * и именем функции (или открывающей скобкой для анонимных функций-генераторов). Если оно true, требуется отступ, в противном случае отступы запрещены.

По умолчанию {"before": true, "after": false}.

Пример конфигурации:

"generator-star-spacing": ["error", {"before": true, "after": false}]

И параметр имеет сокращенную запись в виде ключевого слова:

  • {"before": true, "after": false} → "before"
  • {"before": false, "after": true} → "after"
  • {"before": true, "after": true} → "both"
  • {"before": false, "after": false} → "neither"

Пример сокращенной конфигурации:

"generator-star-spacing": ["error", "after"]

Кроме того, это правило допускает дополнительную настраиваемость с помощью наложений по типу функции.

  • named предоставляет наложения для именованных функций
  • anonymous предоставляет наложения для анонимных функций
  • method предоставляет наложения для методов класса или сокращенных функций свойств

Пример конфигурации с наложениями:

"generator-star-spacing": ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]

В приведенной выше конфигурации параметры "before" и "after" на верхнем уровне определяют поведение правила по умолчанию, в то время как параметры "anonymous" и "method" переопределяют поведение по умолчанию. Наложения могут быть либо объектом с "before" и "after", либо сокращенной строкой, как описано выше.

Примеры

до

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

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

function *generator() {}

var anonymous = function *() {};

var shorthand = { *generator() {} };

после

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

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

function* generator() {}

var anonymous = function* () {};

var shorthand = { * generator() {} };

оба

Примеры корректного кода для этого правила с параметром "both":

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

function * generator() {}

var anonymous = function * () {};

var shorthand = { * generator() {} };

ни то ни другое

Примеры корректного кода для этого правила с параметром "neither":

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

function*generator() {}

var anonymous = function*() {};

var shorthand = { *generator() {} };

Примеры некорректного кода для этого правила с наложениями:

Открыть в Playground
/*eslint generator-star-spacing: ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]*/

function * generator() {}

var anonymous = function* () {};

var shorthand = { *generator() {} };

class Class { static* method() {} }

Примеры корректного кода для этого правила с наложениями:

Открыть в Playground
/*eslint generator-star-spacing: ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]*/

function* generator() {}

var anonymous = function*() {};

var shorthand = { * generator() {} };

class Class { static * method() {} }

Когда не стоит его использовать

Если ваш проект не будет использовать генераторы или вас не волнует согласованность отступов, вам не нужно это правило.

Версия

Это правило было введено в ESLint v0.17.0.

Дополнительное чтение

Читать Понимание ECMAScript 6 | Leanpub

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/generator-star-spacing

Spec-Zone.ru

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