generator-star-spacing
Обеспечение единообразных пробелов вокруг операторов * в функциях-генераторах
Некоторые проблемы, обнаруживаемые этим правилом, можно автоматически исправить с помощью параметра командной строки --fix
Это правило было помечено как устаревшее в ESLint v8.53.0. Оно будет удалено в версии v11.0.0. Используйте соответствующее правило из @stylistic/eslint-plugin.
Генераторы — это новый тип функций в 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
Примеры корректного кода для этого правила с параметром "before":
/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };
after
Примеры корректного кода для этого правила с параметром "after":
/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };
both
Примеры корректного кода для этого правила с параметром "both":
/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };
neither
Примеры корректного кода для этого правила с параметром "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