【问题标题】:How to define a Flow type for an object that must have at least one of the properties?如何为必须具有至少一个属性的对象定义流类型?
【发布时间】:2017-01-31 22:37:23
【问题描述】:

我有以下对象声明:

type QueryQuantifierType = {
  +max?: number,
  +min?: number,
  +multiple?: boolean
};

它允许:

{
  min: 1
}

{
  max: 1
}

{
  max: 1,
  min: 1
}

{
  min: 1,
  multiple: true
}

{
  max: 1,
  multiple: true
}

这些是有效值。

但是,问题是它也是permits an empty object

如何为必须具有至少一个属性的对象定义 Flow 类型?

【问题讨论】:

    标签: javascript flowtype


    【解决方案1】:

    我想出如何做到这一点的唯一方法是使用 unionexact 对象:

    type QuantifierType =
      {|
        +max: number,
        +min?: number,
        +multiple?: boolean
      |} |
      {|
        +max?: number,
        +min: number,
        +multiple?: boolean
      |} |
      {|
        +max?: number,
        +min?: number,
        +multiple: boolean
      |};
    

    【讨论】:

    • 作为记录,当使用Infinity 作为number 值时,存在与此方法相关的错误(可能)。 github.com/facebook/flow/issues/3296
    • 您是否找到了一种现代方法来做到这一点?还有+前缀是什么意思?
    猜你喜欢
    • 2022-11-04
    • 2019-04-03
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多