Flow 中的可选对象属性

Optional object properties in Flow

流量版本:v0.114.0

type Arg = Array<{
  someProp: string,
  maybeOptional?: string
}>

const someFunc = (arg: Arg) => {
  return arg
}


type OtherArg = Array<{
  someProp: string,
  maybeOptional: string
}>

const otherFunc = (otherArg: OtherArg) => {
    return someFunc(otherArg)
}

预期行为

提供可选字段时不应引发错误。 用例: 可选择执行某些功能的通用组件 - 我们始终期望具有该功能的通用组件的特定实现

实际行为

无法调用 someFunc 并将 otherArg 绑定到 arg,因为字符串 [1] 与数组的 属性 maybeOptional 中未定义的 [2] 不兼容元素.

https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAodAXAngBwKZgCCATgOZgC8RxxAhlgDwDeqYYAznALZ4AKxcHAC4OGYgEsAdqQA0rMF3oAjPAHkcGcXEm0YAfhHsxU0qgC+APnQBjbUY7c8AMQCuk65TAAKWmRElSAEpKCzAWNmI8DBdiSTBfUzN0VGx8MFUMAAs8YgDPEjpGcIcefkFDY2k5NkUsFXVNbV0KiWlzK1RbSXs4LJzXd08vXuzcv3S+saCQsNQASEjo2JLnN2thyYDA83QgA

已在 Flow 存储库的问题中回答:

I recommend to always use at least $ReadOnlyArray instead of Array.

https://github.com/facebook/flow/issues/8238#issuecomment-566583654