【发布时间】:2018-09-06 22:50:27
【问题描述】:
我在函数getRowData的最后一行之前出现以下错误:
消息:'不能调用
getRow与el.arr绑定到data因为: 未知类型 [1] 的任一属性arr与数组不兼容 键入 [2]。或未知类型 [1] 的属性arr不兼容 字符串 [3]。 (参考文献:[1] [2] [3])' at:'60,44' 来源:'flow' 代码:'未定义'
仅当我将 type UserProps 中的 Array<string> 更改为 Array<mixed> 时,此错误才会消失,但我想保留字符串数组。
我不明白为什么会出现此错误。我明确地将data.audio 和data.chat 设置为Array<string>。任何帮助将不胜感激!
type UserProps = {
name: string,
audio: Array<string>,
chat: Array<string>,
enableChat: boolean,
enableAudio: boolean,
status: string,
};
const getRow = (key, data: string[] | string, style = {}) => {
const text = Array.isArray(data) ? data.join(", ") : data;
return (
<TableRowColumn
key={`row-${key}`}
style={{ whiteSpace: "pre-wrap", ...style }}
>
{text}
</TableRowColumn>
);
};
const getRowData = (data: UserProps) =>
[
data.name,
data.status,
{
arr: data.audio,
style: { color: data.enableAudio ? "green" : "red" }
},
{ arr: data.chat, style: { color: data.enableChat ? "green" : "red" } }
].map(
(el, i) =>
el && el.arr && el.style ? getRow(i, el.arr, el.style) : getRow(i, el) // error in el.arr !!!!!
);
【问题讨论】:
-
新手问题,但是:
Array<string>等于string[]吗? -
是的,与 string[] 相同的错误
标签: javascript reactjs visual-studio-code flowtype