我正在使用一个库(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
}
没有这种丑陋的类型检查,是否可以处理多个返回类型没有聪明的分解方法?
我尝试返回一个数组而不是对象,但是后来我遇到了一个字符串与数组无法区分的问题。
我在这里错过了一些简单的东西吗?