如何在流程中实现以下功能
export type Response = {
err: string,
data: ?Array<Object>,
} | {
data: Array<Object>,
};
我想表达一个类型,它返回错误和可选数据,或者没有错误字段,如果没有。但是,我用它作为
return { err: 'todo' };
^^^^^^^^^^^^^^^ object literal. This type is incompatible with
.... Response
union: object type(s)
答案 0 :(得分:24)
在Flow中,可选字段和可空值之间存在差异。
{key: ?valueType}
表示对象必须包含key
,其值必须为null
或类型valueType
。
{key?: valueType}
表示对象可能包含key
,如果存在key
,则其值必须为valueType
类型
{key?: ?valueType}
表示对象可能包含key
,如果存在key
,则其值必须为null
<类型valueType
的强>或。
您的用例需要#2或#3。我个人建议不要使用#3 - 我发现这种模式比它需要的更灵活。
答案 1 :(得分:0)
看起来,我的语法对于可选字段
是错误的export type Response = {
err: string,
data?: Array<Object>,
} | {
data: Array<Object>,
};
这不会给出任何错误。我不知道为什么没有报告任何语法错误。