Spec-Zone.ru › ESLint

operator-linebreak

Принудительный стиль переноса строки для операторов

🔧 Исправимо

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

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

Когда оператор слишком длинный для одной строки, перенос строки обычно вставляется рядом с операторами, разделяющими выражения. Первым приходящим в голову стилем является размещение оператора в конце строки, следуя правилам английской пунктуации.

var fullHeight = borderTop +
                 innerHeight +
                 borderBottom;

Некоторые разработчики считают, что размещение операторов в начале строки делает код более читабельным.

var fullHeight = borderTop
               + innerHeight
               + borderBottom;

Подробное описание правила

Это правило принуждает к согласованному стилю переноса строки для операторов.

Параметры

Это правило имеет два параметра: строковый и объектный.

Строковый параметр:

  • "after" требует переноса строки после оператора
  • "before" требует переноса строки перед оператором
  • "none" запрещает переносы строк по обе стороны оператора

Объектный параметр:

  • "overrides" переопределяет глобальную настройку для указанных операторов

Значение по умолчанию — "after", { "overrides": { "?": "before", ":": "before" } }

после

Примеры некорректного кода для этого правила с параметром "after":

Открыть в Playground
/*eslint operator-linebreak: ["error", "after"]*/

foo = 1
+
2;

foo = 1
    + 2;

foo
    = 5;

if (someCondition
    || otherCondition) {
}

answer = everything
  ? 42
  : foo;

class Foo {
    a
        = 1;
    [b]
        = 2;
    [c
    ]
        = 3;
}

Примеры корректного кода для этого правила с параметром "after":

Открыть в Playground
/*eslint operator-linebreak: ["error", "after"]*/

foo = 1 + 2;

foo = 1 +
      2;

foo =
    5;

if (someCondition ||
    otherCondition) {
}

answer = everything ?
  42 :
  foo;

class Foo {
    a =
        1;
    [b] =
        2;
    [c
    ] =
        3;
    d = 4;
}

перед

Примеры некорректного кода для этого правила с параметром "before":

Открыть в Playground
/*eslint operator-linebreak: ["error", "before"]*/

foo = 1 +
      2;

foo =
    5;

if (someCondition ||
    otherCondition) {
}

answer = everything ?
  42 :
  foo;

class Foo {
    a =
        1;
    [b] =
        2;
    [c
    ] =
        3;
}

Примеры корректного кода для этого правила с параметром "before":

Открыть в Playground
/*eslint operator-linebreak: ["error", "before"]*/

foo = 1 + 2;

foo = 1
    + 2;

foo
    = 5;

if (someCondition
    || otherCondition) {
}

answer = everything
  ? 42
  : foo;

class Foo {
    a
        = 1;
    [b]
        = 2;
    [c
    ]
        = 3;
    d = 4;
}

нигде

Примеры некорректного кода для этого правила с параметром "none":

Открыть в Playground
/*eslint operator-linebreak: ["error", "none"]*/

foo = 1 +
      2;

foo = 1
    + 2;

if (someCondition ||
    otherCondition) {
}

if (someCondition
    || otherCondition) {
}

answer = everything
  ? 42
  : foo;

answer = everything ?
  42 :
  foo;

class Foo {
    a =
        1;
    [b] =
        2;
    [c
    ] =
        3;
    d
        = 4;
    [e]
        = 5;
    [f
    ]
        = 6;
}

Примеры корректного кода для этого правила с параметром "none":

Открыть в Playground
/*eslint operator-linebreak: ["error", "none"]*/

foo = 1 + 2;

foo = 5;

if (someCondition || otherCondition) {
}

answer = everything ? 42 : foo;

class Foo {
    a = 1;
    [b] = 2;
    [c
    ] = 3;
    d = 4;
    [e] = 5;
    [f
    ] = 6;
}

переопределения

Примеры дополнительного некорректного кода для этого правила с параметром { "overrides": { "+=": "before" } }:

Открыть в Playground
/*eslint operator-linebreak: ["error", "after", { "overrides": { "+=": "before" } }]*/

var thing = 'thing';
thing +=
  's';

Примеры дополнительного корректного кода для этого правила с параметром { "overrides": { "+=": "before" } }:

Открыть в Playground
/*eslint operator-linebreak: ["error", "after", { "overrides": { "+=": "before" } }]*/

var thing = 'thing';
thing
  += 's';

Примеры дополнительного корректного кода для этого правила с параметром { "overrides": { "?": "ignore", ":": "ignore" } }:

Открыть в Playground
/*eslint operator-linebreak: ["error", "after", { "overrides": { "?": "ignore", ":": "ignore" } }]*/

answer = everything ?
  42
  : foo;

answer = everything
  ?
  42
  :
  foo;

Примеры некорректного кода для этого правила с параметром по умолчанию "after", { "overrides": { "?": "before", ":": "before" } }:

Открыть в Playground
/*eslint operator-linebreak: ["error", "after", { "overrides": { "?": "before", ":": "before" } }]*/

foo = 1
+
2;

foo = 1
    + 2;

foo
    = 5;

if (someCondition
    || otherCondition) {
}

answer = everything ?
  42 :
  foo;

Примеры корректного кода для этого правила с параметром по умолчанию "after", { "overrides": { "?": "before", ":": "before" } }:

Открыть в Playground
/*eslint operator-linebreak: ["error", "after", { "overrides": { "?": "before", ":": "before" } }]*/

foo = 1 + 2;

foo = 1 +
      2;

foo =
    5;

if (someCondition ||
    otherCondition) {
}

answer = everything
  ? 42
  : foo;

Когда не следует использовать это правило

Если в вашем проекте не будет использоваться общий стиль переноса строки операторов, отключите это правило.

Связанные правила

  • comma-style

Версия

Это правило было добавлено в ESLint v0.19.0.

Ресурсы

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

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

Spec-Zone.ru

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