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} по умолчанию:
/*eslint space-unary-ops: "error"*/
;
;
;
;
;
;
;
;
/*eslint space-unary-ops: "error"*/
function *foo() {
}
/*eslint space-unary-ops: "error"*/
async function foo() {
;
}
Примеры правильного кода для этого правила с параметром {"words": true, "nonwords": false}:
/*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";
/*eslint space-unary-ops: "error"*/
function *foo() {
yield (0)
}
/*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