Каков наилучший способ в ES6 назначить константу условно?

Я хотел бы присвоить моему const validation значение, основанное на условии.

Если this.showRequired() == true Тогда это должно быть 'required'

Иначе, если this.showError() == true Тогда это должно быть 'error'.

Я знаю, конечно, что я могу извлечь его в функцию или каскадные тернарные операторы, но первый, похоже, код раздувается, последний уродлив.

Есть ли лучший способ сделать это? Может быть, выражения if-else?

Ответ 1

Каскадный тернарный оператор выглядит отлично для меня:

const validation = this.showRequired() ? 'required' : this.showError() ? 'error' : null

Если вы считаете, что эта строка слишком длинная, вы можете ее разделить:

const validation = this.showRequired() ? 'required'
                   : this.showError() ? 'error'
                   : null

Или вы могли бы использовать && и || вместо этого:

const validation = (this.showRequired() && 'required') ||
                   (this.showError() && 'error')

Что касается выделения этого кода в отдельную функцию, вы всегда можете использовать встроенную функцию вместо создания еще одного метода класса:

const validation = (() => {
  if (this.showRequired()) {
    return 'required'
  } else if (this.showError()) {
    return 'error'
  }
})()

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