首页 > 解决方案 > 组件仅在用作导出组件的根时才需要类型注释

问题描述

如果我要在导出的组件中使用它,Flow 要求我对组件进行注释,但这仅在未注释的组件被呈现为导出组件的根时才会发生。

// @flow
import React from 'react';

const ContainerA = props => <div {...props} />;

// This one throws "Missing type annotation for `props`."
const ContainerB = props => <div {...props} />;

type Props = { children: React$Node };


// No type error
export const Ok = (props: Props) => <><ContainerA>{props.children}</ContainerA></>;

// Type error (see ContainerB comment)
export const Ko = (props: Props) => <ContainerB>{props.children}</ContainerB>;

Flow-Try 重现

如果我用其他东西(片段、div 等)包装未注释的组件,那么 Flow 不需要我对其进行注释。

我知道 Flow 希望我们对导出的函数、组件等进行注释……但我没有导出该组件,而是在要导出的组件中使用它。

为什么会这样?

标签: reactjsflowtype

解决方案


flow 需要知道导出函数的参数和返回类型。

尝试

看来,当您使用诸如反应片段或流之类的内置内容时,div可以在没有显式注释的情况下推断返回类型。


推荐阅读