2017-04-11 36 views
2

我有以下JSX。例如:流量类型错误:未知类型的属性。此类型与阵列类型不兼容

{ 
    event.divisions && 
    event.divisions.edges && 
    (event.divisions.edges: Array<Object>) 
    .map(d => d.node) 
    .map(division => (
     <div>{division}</div> 
    )) 
} 

没有投射它告诉我它缺少一个注释。随着铸造,我得到以下错误:

81: (event.divisions.edges: Array<Object>) 
     ^^^^^^^^^^^^^^^^^^^^^ property `edges` of unknown type. This type is incompatible with 
81: (event.divisions.edges: Array<Object>) 
           ^^^^^^^^^^^^^ array type 

这怎么可能是不相容的?它怎么可能是未知的?我明确告诉它的类型。

+0

你要循环对象的键event.divisions.edges –

+0

Cast in Flow是安全的。它仍然会验证您提供的类型是否正确。如果不知道“事件”来自哪里以及它的类型是什么,就无法解决您的问题。 –

回答

0

可以映射对象在followig时尚阵列上

{ 
    event.divisions && 
    event.divisions.edges && 
    event.divisions.edges.map(d => { 
     return d.node.map(division => (
     <div>{division}</div> 
    )) 
    } 

} 
+0

虽然这样做会让我产生不同的流量错误。 “81:event.divisions.edges方法'map'的 ^调用方法不能 81被称为:event.divisions.edges ^^^^^^^^^^^^^^^^ ^^^^^属性未知类型的“边缘” – Zack

+0

所以如果我不添加演员阵容,流量警告我边缘未知。如果我添加了演员表,流程会给我一个不兼容的错误。 – Zack

+0

您是如何获得价值的,例如event.divisions.edges –

0

尽量不要做这样的:

{ 
    event.divisions && 
    event.divisions.edges && 
    (event.divisions.edges: $ReadOnlyArray<Object>) 
    .map(d => d.node) 
    .map(division => (
     <div>{division}</div> 
    )) 
} 
+0

同样的问题......--( – Zack