Spec-Zone.ru › ESLint

space-unary-ops

Обеспечивает единообразные пробелы перед унарными операторами и после них

🔧 Можно исправить

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

Важно

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

Подробнее

Некоторые руководства по стилю требуют или запрещают пробелы перед унарными операторами или после них. В основном это вопрос стиля, однако некоторые выражения JavaScript можно записать без пробелов, из-за чего их сложнее читать и поддерживать.

Описание правила

Это правило обеспечивает единообразие пробелов после унарных операторов words и перед унарными операторами nonwords, а также после них.

Для операторов words это правило применяется только в случаях, когда пробел не является синтаксически обязательным. Например, для delete obj.foo пробел обязателен, поэтому это правило его не проверяет. В эквивалентной форме delete(obj.foo) пробел необязателен (delete (obj.foo)), поэтому к ней применяется это правило.

Примеры унарных операторов words:

// new
var joe = new Person();

// delete
var obj = {
    foo: 'bar'
};
delete obj.foo;

// typeof
typeof {} // object

// void
void 0 // undefined

Примеры унарных операторов nonwords:

if ([1,2,3].indexOf(1) !== -1) {};
foo = --foo;
bar = bar++;
baz = !foo;
qux = !!baz;

Параметры

У этого правила есть три параметра:

  • words — применяется к унарным словесным операторам, таким как: new, delete, typeof, void, yield
  • nonwords — применяется к унарным операторам, таким как: -, +, --, ++, !, !!
  • overrides — задаёт переопределение правил использования пробелов для каждого оператора, словесного или несловесного. По умолчанию параметр пуст, но его можно использовать, чтобы требовать или запрещать пробелы вокруг операторов. Например:
    "space-unary-ops": [
        2, {
          "words": true,
          "nonwords": false,
          "overrides": {
            "new": false,
            "++": true
          }
    }]

В этом случае пробел после оператора new будет запрещён, а перед оператором ++ и после него — обязателен.

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

Открыть в Playground
/*eslint space-unary-ops: "error"*/

typeof!foo;

void{foo:0};

new[foo][0];

delete(foo.bar);

++ foo;

foo --;

- foo;

+ "3";
Открыть в Playground
/*eslint space-unary-ops: "error"*/

function *foo() {
    yield(0)
}
Открыть в Playground
/*eslint space-unary-ops: "error"*/

async function foo() {
    await(bar);
}

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

Открыть в Playground
/*eslint space-unary-ops: "error"*/

// Word unary operator "typeof" is followed by a whitespace.
typeof !foo;

// Word unary operator "void" is followed by a whitespace.
void {foo:0};

// Word unary operator "new" is followed by a whitespace.
new [foo][0];

// Word unary operator "delete" is followed by a whitespace.
delete (foo.bar);

// Unary operator "++" is not followed by whitespace.
++foo;

// Unary operator "--" is not preceded by whitespace.
foo--;

// Unary operator "-" is not followed by whitespace.
-foo;

// Unary operator "+" is not followed by whitespace.
+"3";
Открыть в Playground
/*eslint space-unary-ops: "error"*/

function *foo() {
    yield (0)
}
Открыть в Playground
/*eslint space-unary-ops: "error"*/

async function foo() {
    await (bar);
}

Версия

Это правило появилось в ESLint v0.10.0.

Ресурсы

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

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/space-unary-ops

Spec-Zone.ru

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