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":
/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };
после
Примеры корректного кода для этого правила с параметром "after":
/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };
оба
Примеры корректного кода для этого правила с параметром "both":
/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };
ни то ни другое
Примеры корректного кода для этого правила с параметром "neither":
/*eslint generator-star-spacing: ["error", {"before": false, "after": false}]*/
function*generator() {}
var anonymous = function*() {};
var shorthand = { *generator() {} };
Примеры некорректного кода для этого правила с наложениями:
/*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 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.
Дополнительное чтение
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/generator-star-spacing