Javascript 为什么';流量检测不到我的空检查?
使用以下简单代码(您可以尝试使用Flow online REPL): 从我的角度来看,所有可能的分支都应该包含一个空检查。为什么flow还在抱怨 背景:两个参数都可以为空。如果两个参数都已定义,我只想指定值。 我知道,这可以写得更紧,但我很好奇为什么Flow不能检查这一点 有趣的是,这个版本可以工作:Javascript 为什么';流量检测不到我的空检查?,javascript,flowtype,Javascript,Flowtype,使用以下简单代码(您可以尝试使用Flow online REPL): 从我的角度来看,所有可能的分支都应该包含一个空检查。为什么flow还在抱怨 背景:两个参数都可以为空。如果两个参数都已定义,我只想指定值。 我知道,这可以写得更紧,但我很好奇为什么Flow不能检查这一点 有趣的是,这个版本可以工作: /* @flow */ class Foo { id: string serialNumber: number constructor(alpha: ?Object, beta: ?
/* @flow */
class Foo {
id: string
serialNumber: number
constructor(alpha: ?Object, beta: ?Object) {
if (!alpha || !beta) return
this.id = alpha.id
this.serialNumber = beta.serialNumber
}
}
流不够聪明:))。只需将检查(所有3个
if
语句)简化为if(!alpha | |!beta)返回
Mmmh,但是为什么flow不能推断“flow”,因为这些检查非常透明?它们不如建议的解决方案透明,flow必须理解组合(!alpha&!beta)| |(!alpha&&beta)|(alpha&!beta)
涵盖所有情况。它还不够聪明去理解它
/* @flow */
class Foo {
id: string
serialNumber: number
constructor(alpha: ?Object, beta: ?Object) {
if (!alpha || !beta) return
this.id = alpha.id
this.serialNumber = beta.serialNumber
}
}