try-catch 错误 "Not covered by Flow"

try-catch error "Not covered by Flow"

当我启用类型覆盖时,我收到一条警告,指出 try-catch 的 catch 部分中的错误是 Not covered by Flow。如果我尝试输入 catch(err: Error),我会得到一个 Unexpected token:

try {
// do something that fails and throws an Error
} catch(err) {
  console.error('Error: ', err.message, err.stack)
}

所以我的问题是,是否可以进行类型检查?如果是这样,最好的解决方案是什么?

我正在使用 FlowType 0.30.0。

我猜您正在使用 Nuclide 并启用了类型覆盖功能。您可以点击状态栏中的百分比来enable/disable它。

"uncovered" 消息严格来说不是流错误。它只是告诉您 Flow 不知道某物的类型。在这种情况下它是正确的。没有办法静态地知道异常类型可能是什么。在 JS 中你可以抛出任何类型,所以你实际上并不确定它甚至是一个错误实例。

不过,在这种情况下,这也是一条良性消息。我个人认为 100% 的覆盖率不一定是一个好的目标。在某些情况下,隐藏代码是有意义的,就像这样。