Spec-Zone.ru › ESLint

space-unary-ops

Принудительное соблюдение одинакового отступа перед или после унарных операторов

🔧 Исправимо

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

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

Некоторые руководства по стилю требуют или запрещают пробелы перед или после унарных операторов. Это в основном вопрос стиля, однако некоторые выражения 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