ImmutableJS / FlowType:是否可以键入Check一个由List.toJS()返回的数组

时间:2018-04-19 09:17:02

标签: javascript flowtype immutable.js

假设我有这个不可变的列表:

type Friend = {
  name: string,
  phone: string
}

const aList: List<Friend> = List([...])

现在我有一个带有下面签名的函数,它应该使用朋友的列表:

const doStuffs = (friends: Array<Friend>): any => {...}

我想用aList转换为数组来调用它:

doStuffs(aList.toJS())

但是我遇到了流量错误,aList.toJS()不是Array<Friend>

是否可以键入检查aList.toJS()的结果,或者我必须像这样定义我的函数:

const doStuffs = (friends: Array<any>): any => {...}

1 个答案:

答案 0 :(得分:1)

如果您确定.toJS()方法正在返回Friend数组,请使用typecast through any让流知道。

E.g。

const arrOfFriends = ((aList.toJS(): any): Array<Friend>)

我知道使用any有时会很糟糕,但如果你确定关于什么事情出来并且你没有&#39}它会很有用。 ; t想要编写自己的.toJS()

变体

或者,您可以编写一个实际将List<Friend>转换为Array<Friend>的方法。也许如果你想确实确定代码的正确性。就个人而言,我只会去上面的any类型转换并编写几个单元测试。