流量不相交联合使用默认捕获全部

时间:2016-09-07 12:25:48

标签: flowtype

我想知道是否可以使用catch all创建一个不相交的联合类型。 我的想法是,如果说对象'键入'字段是一定的值然后我知道我将有更多的数据。

我认为它看起来像这样:

type MyObject =
  | { type: 'extra_details', moreDetails: {here: 'it is'} }
  | { type: string }

谢谢!

1 个答案:

答案 0 :(得分:1)

在文档中有一章关于标记的联合。 https://flowtype.org/docs/dynamic-type-tests.html#tagged-unions

但支票如

  function foo(x: MyObject) {
      if (x.type === 'extra_details') {
         // ...extra details code-path
      }
  }

不足以证明流在此代码路径中,x只能是extraDetails类型。该检查满足两种类型的联合。 {type: string}{type: 'extra_details'}的更一般情况。但是,您可以检查是否存在额外的字段。

  if (x.moreDetails) {

  }