Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';流量检测不到我的空检查?_Javascript_Flowtype - Fatal编程技术网

Javascript 为什么';流量检测不到我的空检查?

Javascript 为什么';流量检测不到我的空检查?,javascript,flowtype,Javascript,Flowtype,使用以下简单代码(您可以尝试使用Flow online REPL): 从我的角度来看,所有可能的分支都应该包含一个空检查。为什么flow还在抱怨 背景:两个参数都可以为空。如果两个参数都已定义,我只想指定值。 我知道,这可以写得更紧,但我很好奇为什么Flow不能检查这一点 有趣的是,这个版本可以工作: /* @flow */ class Foo { id: string serialNumber: number constructor(alpha: ?Object, beta: ?

使用以下简单代码(您可以尝试使用Flow online REPL):

从我的角度来看,所有可能的分支都应该包含一个空检查。为什么flow还在抱怨

背景:两个参数都可以为空。如果两个参数都已定义,我只想指定值。 我知道,这可以写得更紧,但我很好奇为什么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
  }
}

流不够聪明:))。只需将检查(所有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
  }
}