假设我有这个不可变的列表:
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 => {...}
答案 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
类型转换并编写几个单元测试。