flowtype 如何用可选字段注释联合
flowtype how to annotate union with optional fields
flow中如何实现如下
export type Response = {
err: string,
data: ?Array<Object>,
} | {
data: Array<Object>,
};
我想表达一种类型,其中 returns 一个错误和可选数据或没有错误字段,以防出现 none。但是,我将其用作
return { err: 'todo' };
^^^^^^^^^^^^^^^ object literal. This type is incompatible with
.... Response
union: object type(s)
看起来,我的可选字段语法错误
export type Response = {
err: string,
data?: Array<Object>,
} | {
data: Array<Object>,
};
这不会给出任何错误。我不知道为什么没有为此报告任何语法错误。
在 Flow 中,可选字段和可为 null 的值之间存在差异。
{key: ?valueType}
表示对象必须包含key
,其值必须是null
[=33] =] 或 类型 valueType
.
{key?: valueType}
表示对象可能包含key
,如果key
存在,它的值必须是类型 valueType
.
{key?: ?valueType}
表示对象可能包含key
,如果key
存在,它的值必须是null
或 类型 valueType
.
您的用例需要#2 或#3。就我个人而言,我建议不要使用#3——我发现该模式比它需要的更灵活。
flow中如何实现如下
export type Response = {
err: string,
data: ?Array<Object>,
} | {
data: Array<Object>,
};
我想表达一种类型,其中 returns 一个错误和可选数据或没有错误字段,以防出现 none。但是,我将其用作
return { err: 'todo' };
^^^^^^^^^^^^^^^ object literal. This type is incompatible with
.... Response
union: object type(s)
看起来,我的可选字段语法错误
export type Response = {
err: string,
data?: Array<Object>,
} | {
data: Array<Object>,
};
这不会给出任何错误。我不知道为什么没有为此报告任何语法错误。
在 Flow 中,可选字段和可为 null 的值之间存在差异。
{key: ?valueType}
表示对象必须包含key
,其值必须是null
[=33] =] 或 类型valueType
.{key?: valueType}
表示对象可能包含key
,如果key
存在,它的值必须是类型valueType
.{key?: ?valueType}
表示对象可能包含key
,如果key
存在,它的值必须是null
或 类型valueType
.
您的用例需要#2 或#3。就我个人而言,我建议不要使用#3——我发现该模式比它需要的更灵活。