Skip to content

space-infix-ops ​

While formatting preferences are very personal, a number of style guides require spaces around operators, such as:

js
var sum = 1 + 2;

Proponents of this rule believe that it makes code easier to read and can more easily highlight potential errors, such as:

js
var sum = i+++2;

While this is valid JavaScript syntax, it is hard to determine what the author intended.

Rule Details ​

This rule is aimed at ensuring there are spaces around infix operators.

Options ​

This rule accepts a single options argument with the following defaults:

json
"space-infix-ops": ["error", { "int32Hint": false, "ignoreOperators": [], "ignoreTypes": false }]

int32Hint ​

Set the int32Hint option to true (default is false) to allow write a|0 without space.

js
var foo = bar|0; // `foo` is forced to be signed 32 bit integer

Examples of incorrect code for this rule:

js
/* eslint @stylistic/space-infix-ops: "error" */

a
+
b
a
+
b
a
+
b
a
?
b
:
c
const a
=
{b:1};
var {b
=
0}
=
bar;
function foo(a
=
0) { }
type Foo<T
=
true> = T
incorrect

Examples of correct code for this rule:

js
/* eslint @stylistic/space-infix-ops: "error" */

a + b

a       + b

a ? b : c

const a = {b:1};

var {b = 0} = bar;

function foo(a = 0) { }

type Foo<T = true> = T
correct

ignoreOperators ​

Set the ignoreOperators option to a list of operators that should not require surrounding spaces. Operators are matched by their exact text, so ignoring + does not ignore +=.

json
"space-infix-ops": ["error", { "ignoreOperators": ["*", "/", "^"] }]

With this configuration, a^b + c*d + e/f is valid while + is still checked.

ignoreTypes ​

Set the ignoreTypes option to true (default is false) to allow write string|number without space.

ts
var foo: string|number = bar;

When Not To Use It ​

You can turn this rule off if you are not concerned with the consistency of spacing around infix operators.

Changelog ​

v6.0.0-beta.6 on

v6.0.0-beta.1 on

Released under the MIT License.