拥有这个简单的代码(您可以尝试Flow在线REPL powershell Get-Content <file> -Wait
):
// @flow
class Foo {
id: string
serialNumber: number
constructor(alpha: ?Object, beta: ?Object) {
if (!alpha && !beta) return
if (!alpha && beta) return
if (alpha && !beta) return
this.id = alpha.id // flow complains about alpha might be null or undefined
this.serialNumber = beta.serialNumber // flow complains about beta
}
}
从我的角度来看,我所有可能的分支都应该用空检查覆盖。为什么流程还在抱怨?
背景:两个参数都可以为空。如果两个参数都已定义,我只想分配值。 我知道,这可以写得更紧,但我很好奇为什么Flow无法检查这个。
有趣的是,这个版本有效:
/* @flow */
class Foo {
id: string
serialNumber: number
constructor(alpha: ?Object, beta: ?Object) {
if (!alpha || !beta) return
this.id = alpha.id
this.serialNumber = beta.serialNumber
}
}