Уничтожение одного или нескольких типов возврата из функции ES6 - PullRequest
0 голосов
/ 20 июня 2019

Я использую библиотеку (Yup), которая обычно помещает ошибки в виде пар ключ-значение, где значения являются строками в объекте, чтобы я мог их прочитать и отобразить пользователю.Строки - это просто ключи ошибок для поиска в таблице симпатичных сообщений об ошибках.

console.log(errors)

// output

{
  required: "form:error:required"
}

Я написал несколько пользовательских функций, так что для некоторых ключей ошибок теперь я возвращаю объект, похожий на:

console.log(errors)

// output

{
  minChars: {key: "form:error:minChars", options: {count: 2} }
}

Я использую i18next, где мне нужно передать ключ перевода следующим образом:

t(key, options)

В настоящее время у меня есть очень уродливый код, который выбирает ключ перевода из объекта ошибок, но затем онэто может быть простая строка или объект с ключом и параметрами.

Мой текущий код для этого:

const errorObj = isError ? _.get(errors, field.name, '') : ''
let errorKey, errorOptions
if (typeof errorObj === 'string') {
  errorKey = errorObj
} else {
  errorKey = errorObj.key
  errorOptions = errorObj.options
}

Без этой уродливой проверки типов, нет ли хитрой деструктуризации?можно сделать для обработки нескольких типов возвращаемых данных?

Я пытался возвратить массив вместо объекта, но затем я столкнулся с вопросом о неразличимости строки из массива.

Я пропустилчто-то простое здесь?

...