为什么没有流检测我的空检查?

时间:2018-01-29 08:06:21

标签: javascript flowtype

拥有这个简单的代码(您可以尝试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
  }
}

0 个答案:

没有答案