解构不同的条件 Return 类型
Destructuring Different Conditional Return Types
我有一个函数可以 return 一个字符串,如果有错误,或者两个对象,如果没有错误。我的函数如下所示:
function logResults(json) {
const one = json[0]
const two = json[1]
const error = json[0].error
if (error) {
return 'error at logResults' // string type
}
return (one, two) // object type
}
我的问题是是否可以解构此函数的 return 类型?如果两个对象成功 returned:let [ one, two ] = logResults(json)
,此行有效,但如果字符串 returned,则此行无效。如果无法进行解构,那么处理不同 return 类型的最有效方法是什么?
return either a string, if there is an error, or two objects, when there is no error
呃,别这样。正是出于您所证明的原因:该功能变得不可用。只需抛出一个错误或 return 一个包含两个对象的数组。
function logResults(json) {
const [one, two] = json;
if (one.error) {
throw new Error('error at logResults');
}
return [one, two]; // or just `json`?
}
现在你可以像想象的那样在调用后使用解构了。
我有一个函数可以 return 一个字符串,如果有错误,或者两个对象,如果没有错误。我的函数如下所示:
function logResults(json) {
const one = json[0]
const two = json[1]
const error = json[0].error
if (error) {
return 'error at logResults' // string type
}
return (one, two) // object type
}
我的问题是是否可以解构此函数的 return 类型?如果两个对象成功 returned:let [ one, two ] = logResults(json)
,此行有效,但如果字符串 returned,则此行无效。如果无法进行解构,那么处理不同 return 类型的最有效方法是什么?
return either a string, if there is an error, or two objects, when there is no error
呃,别这样。正是出于您所证明的原因:该功能变得不可用。只需抛出一个错误或 return 一个包含两个对象的数组。
function logResults(json) {
const [one, two] = json;
if (one.error) {
throw new Error('error at logResults');
}
return [one, two]; // or just `json`?
}
现在你可以像想象的那样在调用后使用解构了。