key-spacing
強制物件實字屬性中鍵和值之間的一致間距
此規則回報的某些問題可以透過 --fix
命令列 選項自動修正
此規則強制物件實字屬性中冒號周圍的間距。它可以個別驗證每個屬性,或者它可以確保物件實字中相鄰屬性的水平對齊。
規則詳細資訊
此規則強制物件實字屬性中鍵和值之間的一致間距。 在長行的情況下,在允許空格的任何地方添加新行是可以接受的。
選項
此規則具有物件選項
"beforeColon": false (預設) | true
false
:禁止物件實字中鍵和冒號之間的空格。true
:要求物件實字中鍵和冒號之間至少有一個空格。
"afterColon": true (預設) | false
true
:要求物件實字中冒號和值之間至少有一個空格。false
:禁止物件實字中冒號和值之間的空格。
"mode": "strict" (預設) | "minimum"
"strict"
:強制物件實字中冒號之前或之後只有一個空格。"minimum"
:強制物件實字中冒號之前或之後有一個或多個空格。
"align": "value" | "colon"
"value"
:強制物件實字中值的水平對齊。"colon"
強制物件實字中冒號和值的水平對齊。
- 當值在物件實字中對齊時,具有物件值的
"align"
允許進行細緻的間距設定。 "singleLine"
指定單行物件實字的間距樣式。"multiLine"
指定多行物件實字的間距樣式。
請注意,您可以選擇使用頂層選項或分組選項(singleLine
和 multiLine
),但不能同時使用兩者。
beforeColon
使用預設 { "beforeColon": false }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "beforeColon": false }]*/
var obj = { "foo": 42 };
使用預設 { "beforeColon": false }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "beforeColon": false }]*/
var obj = { "foo": 42 };
使用 { "beforeColon": true }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "beforeColon": true }]*/
var obj = { : 42 };
使用 { "beforeColon": true }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "beforeColon": true }]*/
var obj = { "foo" : 42 };
afterColon
使用預設 { "afterColon": true }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "afterColon": true }]*/
var obj = { "foo": };
使用預設 { "afterColon": true }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "afterColon": true }]*/
var obj = { "foo": 42 };
使用 { "afterColon": false }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "afterColon": false }]*/
var obj = { "foo"42 };
使用 { "afterColon": false }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "afterColon": false }]*/
var obj = { "foo":42 };
mode
使用預設 { "mode": "strict" }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "mode": "strict" }]*/
call({
foobar: 42,
bat2 * 2
});
使用預設 { "mode": "strict" }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "mode": "strict" }]*/
call({
foobar: 42,
bat: 2 * 2
});
使用 { "mode": "minimum" }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "mode": "minimum" }]*/
call({
foobar: 42,
bat: 2 * 2
});
align
使用 { "align": "value" }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "align": "value" }]*/
var obj = {
a: ,
bcde42,
fg: foo()
};
使用 { "align": "value" }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "align": "value" }]*/
var obj = {
a: value,
bcde: 42,
fg: foo(),
h: function() {
return this.a;
},
ijkl: 'Non-consecutive lines form a new group'
};
var obj = { a: "foo", longPropertyName: "bar" };
使用 { "align": "colon" }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", { "align": "colon" }]*/
call({
foobar: 42,
2 * 2
});
使用 { "align": "colon" }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", { "align": "colon" }]*/
call({
foobar: 42,
bat : 2 * 2
});
align
align
選項可以透過 beforeColon
、afterColon
、mode
和 on
選項進行額外設定。
如果 align
定義為物件,但未提供所有參數,則未定義的參數將預設為以下值
// Defaults
align: {
"beforeColon": false,
"afterColon": true,
"on": "colon",
"mode": "strict"
}
使用範例 { "align": { } }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", {
"align": {
"beforeColon": true,
"afterColon": true,
"on": "colon"
}
}]*/
var obj = {
"one" : 1,
"seven" : 7
}
/*eslint key-spacing: ["error", {
"align": {
"beforeColon": false,
"afterColon": false,
"on": "value"
}
}]*/
var obj = {
"one": 1,
"seven":7
}
align 和 multiLine
multiLine
和 align
選項可能不同,這允許對檔案的 key-spacing
進行微調控制。 如果 align
設定為物件,則 align
將不會從 multiLine
繼承。
當物件實字跨越多行時,會使用 multiLine
。 當同一個物件中有一組屬性時,會使用 align
設定。 例如
var myObj = {
key1: 1, // uses multiLine
key2: 2, // uses align (when defined)
key3: 3, // uses align (when defined)
key4: 4 // uses multiLine
}
使用範例 { "align": { }, "multiLine": { } }
選項時,不正確程式碼範例
/*eslint key-spacing: ["error", {
"multiLine": {
"beforeColon": false,
"afterColon":true
},
"align": {
"beforeColon": true,
"afterColon": true,
"on": "colon"
}
}]*/
var obj = {
"myObjectFunction": function() {
// Do something
},
"one": 1,
"seven": 7
}
使用範例 { "align": { }, "multiLine": { } }
選項時,正確程式碼範例
/*eslint key-spacing: ["error", {
"multiLine": {
"beforeColon": false,
"afterColon": true
},
"align": {
"beforeColon": true,
"afterColon": true,
"on": "colon"
}
}]*/
var obj = {
"myObjectFunction": function() {
// Do something
//
}, // These are two separate groups, so no alignment between `myObjectFunction` and `one`
"one" : 1,
"seven" : 7 // `one` and `seven` are in their own group, and therefore aligned
}
singleLine 和 multiLine
使用範例 { "singleLine": { }, "multiLine": { } }
選項時,正確程式碼範例
/*eslint "key-spacing": [2, {
"singleLine": {
"beforeColon": false,
"afterColon": true
},
"multiLine": {
"beforeColon": true,
"afterColon": true,
"align": "colon"
}
}]*/
var obj = { one: 1, "two": 2, three: 3 };
var obj2 = {
"two" : 2,
three : 3
};
何時不該使用
如果您有另一個屬性間距慣例可能與可用選項不一致,或者如果您想同時允許多種樣式,您可以安全地停用此規則。
版本
此規則在 ESLint v0.9.0 中引入。