コンテンツにスキップ

@stylistic/js/

multiline-ternary

JavaScriptでは、三項演算子のオペランドを改行で区切ることができ、プログラムの可読性を向上させることができます。

例えば

js
var foo = bar > baz ? value1 : value2;

上記は、可読性を向上させ、オペランドをより明確に区切るために、次のように書き直すことができます。

js

var foo = bar > baz ?
    value1 :
    value2;

var foo = bar > baz
    ? value1
    : value2;

ルールの詳細

このルールは、三項演算子のオペランド間の改行を強制または禁止します。注:演算子の位置はこのルールでは強制されません。演算子自体の位置を強制することに関心がある場合は、operator-linebreakルールを参照してください。

オプション

このルールには文字列オプションがあります。

  • "always" (デフォルト) は、三項演算子のオペランド間に改行を強制します。
  • "always-multiline" は、式が複数行にまたがる場合、三項演算子のオペランド間に改行を強制します。
  • "never" は、三項演算子のオペランド間の改行を禁止します。
  • "ignoreJSX": true JSXの三項演算子を無視します。デフォルトは false です。

always

これはデフォルトのオプションです。

オプション "always" でこのルールに違反するコードの例

js
/*eslint @stylistic/js/multiline-ternary: ["error", "always"]*/

foo > bar
?
value1
: value2;
foo > bar
? value :
value2; foo > bar ?
value
: value2;
違反

オプション "always" でこのルールに準拠するコードの例

js
/*eslint @stylistic/js/multiline-ternary: ["error", "always"]*/

foo > bar ?
    value1 :
    value2;

foo > bar ?
    (baz > qux ?
        value1 :
        value2) :
    value3;

foo > bar
    ? (baz > qux
        ? value1
        : value2)
    : value3;
準拠

always-multiline

オプション "always-multiline" でこのルールに違反するコードの例

js
/*eslint @stylistic/js/multiline-ternary: ["error", "always-multiline"]*/

foo > bar
? value1 :
value2; foo > bar ?
value1
: value2;
foo > bar &&
bar > baz ?
value1
: value2;
違反

オプション "always-multiline" でこのルールに準拠するコードの例

js
/*eslint @stylistic/js/multiline-ternary: ["error", "always-multiline"]*/

foo > bar ? value1 : value2;

foo > bar ?
    value1 :
    value2;

foo > bar ?
    (baz > qux ? value1 : value2) :
    value3;

foo > bar ?
    (baz > qux ?
        value1 :
        value2) :
    value3;

foo > bar &&
    bar > baz ?
        value1 :
        value2;

foo > bar
    ? baz > qux
        ? value1
        : value2
    : value3;
準拠

never

オプション "never" でこのルールに違反するコードの例

js
/*eslint @stylistic/js/multiline-ternary: ["error", "never"]*/

foo > bar ? 
value
:
value2;
foo > bar
?
value : value2;
foo >
bar ?
value1
:
value2;
違反

オプション "never" でこのルールに準拠するコードの例

js
/*eslint @stylistic/js/multiline-ternary: ["error", "never"]*/

foo > bar ? value1 : value2;

foo > bar ? (baz > qux ? value1 : value2) : value3;

foo > bar ? (
    baz > qux ? value1 : value2
) : value3;
準拠

使用しない場合

三項演算子のオペランドを改行で区切るかどうかについて厳密な規則がない場合は、このルールを安全に無効にすることができます。

互換性

MITライセンスの下でリリースされています。