У меня есть такой код:
let upgrade;
if (device.firmwareV !== latestFirmware.version) {
upgrade = "Firmware is up to date.";
} else if (!firmUpTool) {
upgrade = "Cannot upgrade the firmware through this connection.";
} else if (latestFirmware.type !== device.type) {
upgrade = "Cannot upgrade firmware of this device.";
} else {
upgrade = upgradeControl(firmUpTool);
}
Но я бы предпочел использовать троичный оператор (условие ?
значение1 :
значение2), поскольку он позволяет мне заменить let
на const
(и, на мой взгляд, выглядит более аккуратно, хотя я ценю это мнение различаться):
const upgrade =
device.firmwareV !== latestFirmware.version ?
"Firmware is up to date."
: !firmUpTool ?
"Cannot upgrade the firmware through this connection."
: latestFirmware.type !== device.type ?
"Cannot upgrade firmware of this device."
: upgradeControl(firmUpTool);
Но ESLint выдает 5 ошибок, как Expected indentation of 12 spaces but found 8.
. Если я следую рекомендациям, я должен сделать отступ в коде, хотя я дал ему правило отступа:
indent: [2, 4, {flatTernaryExpressions: true}]
Я могу избавиться от предупреждений, удаляя символы новой строки после каждого ?
, но это делает строки чрезмерно длинными и, по моему мнению, не такими читаемыми.
Есть ли лучший способ размещения плоских вложенных тернаров или есть какое-то другое правило ESLint, которое я должен использовать здесь?