我试图弄清楚为什么在使用三元运算符而不是if else块时抛出细化。请参阅以下代码段。
答案 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”下描述了这一点。