在下面的示例中,因为我使用switch语句使用匹配的Message类型,所以我想流程识别我的'ENUM_TYPO'错误的情况.它目前没有.
type Message = 'BROADCAST_MESSAGE' | 'PRIVATE_MESSAGE';
const message: Message = 'BROADCAST_MESSAGE';
switch (message) {
case 'ENUM_TYPO':
// Do Broadcast
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
从 v0.32.0 开始,Flow 不会抱怨无法访问的代码,除非是类似的情况
// @flow
function foo() {
throw new Error();
return 123; // This will error
}.
Run Code Online (Sandbox Code Playgroud)
但是,请考虑以下代码
// @flow
function foo(x: string): Object {
if (x === 123) {
return x;
}
return {};
}
Run Code Online (Sandbox Code Playgroud)
目前该代码不会出错。事实上,Flow 确实注意到这x === 123永远不会是真的。在块内if,Flow 会将 的类型细化x为空类型,因为它认为永远不会到达此代码。这就是为什么它没有抱怨该return x声明。
Flow 团队的一名成员即将完成向 Flow 添加可达性分析的工作。一旦这个改进落地(我猜是 v0.34.0?),当 Flow 看到它认为总是会失败的条件时,它就会抱怨。这将对您的示例有所帮助,因为 switch 语句案例基本上是严格的相等检查。
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |