Javascript 有人能解释一下下面的代码吗?

Javascript 有人能解释一下下面的代码吗?,javascript,reactjs,react-redux,flow-typed,Javascript,Reactjs,React Redux,Flow Typed,因此,我目前正在审查使用JS和流类型编写的React-Redux代码。我在流类型方面没有什么经验,所以下面的代码让我有点困惑 首先,我有一些redux部分的操作 export type allActions = |{| +type: "FIRST_ACTION_TYPE", +formType: FormType, +offset: number, +size: number |} |{| +type: "SECOND_ACTION

因此,我目前正在审查使用JS和流类型编写的React-Redux代码。我在流类型方面没有什么经验,所以下面的代码让我有点困惑

首先,我有一些redux部分的操作

export type allActions = 
|{|
   +type: "FIRST_ACTION_TYPE",
   +formType: FormType,
   +offset: number,
   +size: number
 |}
|{|
   +type: "SECOND_ACTION_TYPE",
|};
所以我的第一个问题是{{}这个表达式是什么意思

第二个问题是关于
FormType
部分。因此,在动作的上方有
FormType
的定义。如下所示

type FormProps = {
   prop_1?: string,
   prop_2?: number,
   prop_3: number
};

type FormType = RecordOf<FormProps>;
type FormProps={
项目1:字符串,
项目2:编号,
提案3:编号
};
类型FormType=记录的类型;

有人能解释一下上面的代码在做什么吗?

所有操作都是用于键入Redux Dispatch的联合类型。这允许流在分派无效操作时抛出错误

|{|
   +type: "FIRST_ACTION_TYPE",
   +formType: FormType,
   +offset: number,
   +size: number
 |}
|{|
   +type: "SECOND_ACTION_TYPE",
|};
第一个
|
有点混乱,但它只是一个可选字符,通常由多行并集上的lint添加。它可以被删除,并且不会导致错误

{|…|}定义一个不能包含任何附加属性的精确对象。它们之间的
|
定义了联合

前面的
+
符号将每个属性标记为只读

表单数据中每个属性后面的
符号将每个属性标记为可选

recordOf
为泛型。我认为这可能是定制的,也可能是旧版本的flow


您在哪里看到
|{|
?在你的编辑器中?它在一个.js文件下的代码中,包含所有动作、动作创建者和还原器。哦,这现在很有意义。如果我读更多关于流类型的内容,我会更清楚吗?整个项目都是用流类型编写的,有时我会像这样感到非常困惑绝对,这是一个学习曲线,但一旦点击你永远不会想使用React而不使用它。它也非常接近typescript,所以当你遇到它时,你会更舒服。明白了!非常感谢!