space-before-blocks
一貫性は、あらゆるスタイルガイドの重要な部分です。ブロックの開始中括弧をどこに置くかは個人の好みですが、プロジェクト全体で一貫している必要があります。スタイルが一貫していないと、コードの重要な部分が見えにくくなります。
ルールの詳細
このルールは、ブロックの前のスペースの一貫性を強制します。新しい行で始まらないブロックにのみ適用されます。
- このルールは、
=>
とブロックの間のスペースを無視します。スペースは `arrow-spacing` ルールによって処理されます。 - このルールは、キーワードとブロックの間のスペースを無視します。スペースは `keyword-spacing` ルールによって処理されます。
- このルールは、switch case の `:` とブロックの間のスペースを無視します。スペースは `switch-colon-spacing` ルールによって処理されます。
オプション
このルールは1つの引数を取ります。それが `"always"` であれば、ブロックの前には必ず少なくとも1つのスペースが必要です。 `“never”` の場合、すべてのブロックの前にスペースがあってはなりません。関数ブロック、キーワードブロック、クラスに異なるスペースを適用したい場合は、オプションの設定オブジェクトをルール引数として渡して、ケースごとに個別に設定できます。設定オブジェクトの値が `“off”` の場合、その種類のブロックにはどちらのスタイルも適用されません。
( 例: { "functions": "never", "keywords": "always", "classes": "always" }
)
デフォルトは `"always"` です。
"always"
オプション "always" でこのルールに違反するコードの例
/*eslint @stylistic/space-before-blocks: "error"*/
if (a){
b();
}
function a(){}
for (;;){
b();
}
try {} catch(a){}
class Foo{
constructor(){}
}
オプション `"always"` でこのルールに準拠するコードの例
/*eslint @stylistic/space-before-blocks: "error"*/
if (a) {
b();
}
if (a) {
b();
} else{ /*no error. this is checked by `keyword-spacing` rule.*/
c();
}
class C {
static{} /*no error. this is checked by `keyword-spacing` rule.*/
}
function a() {}
for (;;) {
b();
}
try {} catch(a) {}
"never"
オプション `"never"` でこのルールに違反するコードの例
/*eslint @stylistic/space-before-blocks: ["error", "never"]*/
if (a) {
b();
}
function a() {}
for (;;) {
b();
}
try {} catch(a) {}
オプション `"never"` でこのルールに準拠するコードの例
/*eslint @stylistic/space-before-blocks: ["error", "never"]*/
if (a){
b();
}
function a(){}
for (;;){
b();
}
try{} catch(a){}
class Foo{
constructor(){}
}
設定が `{"functions": "never", "keywords": "always", "classes": "never"}` の場合に、このルールに違反するコードの例
/*eslint @stylistic/space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
/*eslint-env es6*/
function a() {}
try {} catch(a){}
class Foo{
constructor() {}
}
設定が `{"functions": "never", "keywords": "always", "classes": "never"}` の場合に、このルールに準拠するコードの例
/*eslint @stylistic/space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
/*eslint-env es6*/
for (;;) {
// ...
}
describe(function(){
// ...
});
class Foo{
constructor(){}
}
設定が `{"functions": "always", "keywords": "never", "classes": "never"}` の場合に、このルールに違反するコードの例
/*eslint @stylistic/space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
/*eslint-env es6*/
function a(){}
try {} catch(a) {}
class Foo {
constructor(){}
}
設定が `{"functions": "always", "keywords": "never", "classes": "never"}` の場合に、このルールに準拠するコードの例
/*eslint @stylistic/space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
/*eslint-env es6*/
if (a){
b();
}
var a = function() {}
class Foo{
constructor() {}
}
設定が `{"functions": "never", "keywords": "never", "classes": "always"}` の場合に、このルールに違反するコードの例
/*eslint @stylistic/space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
/*eslint-env es6*/
class Foo{
constructor(){}
}
設定が `{"functions": "never", "keywords": "never", "classes": "always"}` の場合に、このルールに準拠するコードの例
/*eslint @stylistic/space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
/*eslint-env es6*/
class Foo {
constructor(){}
}
使用しない場合
ブロックの前のスペースの一貫性を気にしない場合は、このルールを無効にすることができます。
TypeScript 特有
ts/space-before-blocks
/*eslint @stylistic/ts/space-before-blocks: "error"*/
enum Breakpoint{
Large, Medium;
}
interface State{
currentBreakpoint: Breakpoint;
}
/*eslint @stylistic/ts/space-before-blocks: "error"*/
enum Breakpoint {
Large, Medium;
}
interface State {
currentBreakpoint: Breakpoint;
}
オプション
より具体的なオプションオブジェクトが渡された場合、これらのブロックは `classes` 設定オプションに従います。