我如何处理流程中的三元组合

时间:2017-03-26 03:18:00

标签: flowtype

我试图弄清楚为什么在使用三元运算符而不是if else块时抛出细化。请参阅以下代码段。

handleError Fn

1 个答案:

答案 0 :(得分:2)

这些不等同。

在第一个函数中,您的默认情况是抛出一个错误。但在第二个函数中,您的默认情况是设置error === res.message || res.statusText

这里说的是什么流程,“嘿,res.message和res.statusText可能是未定义的。如果是这样,那么就会与error: string发生冲突。”要模仿if-block示例中的逻辑,您必须添加错误处理。 Here is a working example

function handleError(url: string, res: ResponseType): void {
  let error: string;
  if (!res.message || !res.statusText) {
    throw new Error();
  }
  const error: string = res.status === 440 ?
    'Session Timeout' :
    res.message || res.statusText;

  setTopState({error});
}

文档在“Refinement Invalidations”下描述了这一点。