解构不同的条件返回类型

时间:2018-02-14 00:10:26

标签: ecmascript-6 destructuring

我有一个函数,如果有错误,将返回一个字符串,或者在没有错误时返回两个对象。我的功能如下:

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
}

我的问题是,是否可以解构此函数的返回类型?如果成功返回两个对象,则此行有效:let [ one, two ] = logResults(json),但如果返回字符串则无效。如果无法进行解构,处理不同退货类型的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

  

如果有错误,则返回一个字符串;如果没有错误,则返回两个对象

呃,不要那样做。正是由于您已证明的原因:该功能变得无法使用。只需抛出错误或返回包含两个对象的数组。

<OnSiteSearch>

    ...

    <Search>
        <SearchTerm>(horses?|cows?) for sale</SearchTerm>
        <Destination>~/some/path.html</Destination>
    </Search>

    ...

</OnSiteSearch>

现在你可以按照想象在电话会议后使用解构。