flowtype如何使用可选字段注释union

bsr*_*bsr 7 flowtype

如何实现以下流程

export type Response = {
  err: string,
  data: ?Array<Object>,
} | {
  data: Array<Object>,
};
Run Code Online (Sandbox Code Playgroud)

我想表达一个类型,它返回错误和可选数据或没有错误字段,如果没有.但是,我用它作为

return { err: 'todo' };
                ^^^^^^^^^^^^^^^ object literal. This type is incompatible with
.... Response
union: object type(s)
Run Code Online (Sandbox Code Playgroud)

Nik*_*ita 25

在Flow中,可选字段和可空值之间存在差异.

  1. {key: ?valueType}表示对象必须包含key,其值必须是null 或者是类型valueType.

  2. {key?: valueType}表示对象可能包含key,如果key存在,则其值必须是类型valueType.

  3. {key?: ?valueType}表示对象可能包含key,如果key存在,则其值必须是null 或者是类型valueType.

您的用例需要#2或#3.我个人建议不要使用#3 - 我发现这种模式比它需要的更灵活.