type PropTypes = {
myProp: Array<{a: string}> | Array<{a: number}>
}
如果我使用PropTypes创建一个compoennt,如上所示,我总是会收到以下错误:
myProp: *Array<{a: string}>* | Array<{a: number}>,
<<< object type. This type is incompatible with
myProp: Array<{a: string}> | *Array<{a: number}>*,
使用Array |后,这看起来很奇怪数组构造通常适用于简单的函数:
function foo(x: Array<First> | Array<Second>): string {
return String(x[0]['a']);
}
No errors!
修改 MichaelDeBoey的回答指出了我正确的方向,并且当我们试图将道具映射到任何东西时,问题就出现了:
type PropTypes = {
myProp: Array<{a: string}> | Array<{a: number}>
}
class TestComponent extends Component<PropTypes> {
render () {
this.props.myProp.map(prop => prop)
return 'whatever'
}
}
答案 0 :(得分:0)
您使用的是flow
的哪个版本?
通过v0.59.0
flow.org/try尝试使用此功能。
也许您可以尝试使用以下内容(在flow.org/try上观看):
type PropTypes = {
myProp: Array<{a: string} | {a: number}>,
}
或者可能更清楚一点(关注flow.org/try):
type AString = {a: string};
type ANumber = {a: number};
type PropTypes = {
myProp: Array<AString | ANumber>,
};
答案 1 :(得分:0)
我最终使用了一种解决方法。而不是使用 map 我使用迭代(var i = 0 ...): flow.org/try