具有确切类型的不相交联合作为React组件道具

时间:2017-04-05 23:23:09

标签: reactjs flowtype

阅读本文档:https://flow.org/en/docs/types/unions/#toc-disjoint-unions-with-exact-types

...我希望能使用React组件,但是我收到错误。

这是一个简化的案例:

https://flow.org/try/#0C4TwDgpgBAglC8UDeAfKBDAXFYAnArtCgL4DcAUKJFAEILJoBG2ehUJFl40MuA5gGd6cNDU4BjAPYA7AcCgBhegAp0-Adl6CAlAgB8yYuXILlSLDgIRi2igB4l6eElbWoAej3kgA

我明白为什么将C作为函数调用该参数并不会导致错误,但为什么用这些道具创建一个React组件会出错呢?

1 个答案:

答案 0 :(得分:0)

这实际上只是对组件的道具使用精确类型的问题。有an issue开放。 If you take away the union,只有一个确切的类型,它会为您提供更有用的错误消息。

/* @flow */

type A = {| a: true |};
type Args = A;
const C = (args: Args) => null;
<C a={true} />;


9: <C a={true} />;
   ^ props of React element `C`. Inexact type is incompatible with exact type
7: const C = (args: Args) => null;
                    ^ exact type: object type