从函数ES6解构一种或多种返回类型

时间:2019-06-20 00:41:26

标签: javascript ecmascript-6 destructuring yup

我正在使用一个库(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
}

没有这种丑陋的类型检查,是否可以处理多个返回类型没有聪明的分解方法?

我尝试返回一个数组而不是对象,但是后来我遇到了一个字符串与数组无法区分的问题。

我在这里错过了一些简单的东西吗?

0 个答案:

没有答案