Javascript Flowtype未检测对象内属性的类型

Javascript Flowtype未检测对象内属性的类型,javascript,flowtype,Javascript,Flowtype,我遇到了以下错误 90: var b = action.data; ^^^^ property `data`. Property not found in 90: var b = action.data; ^^^^^^ object type 这是一个函数内部的函数,该函数接收操作作为如下参数: export default (s

我遇到了以下错误

 90:             var b = action.data;
                                ^^^^ property `data`. Property not found in
 90:             var b = action.data;
                         ^^^^^^ object type
这是一个函数内部的函数,该函数接收
操作
作为如下参数:

export default (state: SecurityGroupState = { groups: null, editingIPRange: null }, action: Action) => {
类型
操作
是使用
导入类型
导入的,如下所示:

import type { Action } from "../../actions";
现声明如下:

export type Action = {
    type: string,
    data: Object,
} | {
    type: string,
    error: Object,
};
触发初始错误的代码如下所示:

switch (action.type) {
case GET:
    if (action.error) {
        console.error(action.error);
        break;
    }

    var a = action.data; // no error here
    const groupsCopy2 = _.map(state.groups, () => {
        var b = action.data;
    });
}

因此在
var a=…
行中,Flow对
action.data
没有问题,但是在
map
lambda中,它似乎不知道
action:action
可以有一个
data
键。

Flow对优化持悲观态度,它认为每个函数调用都可以修改
action.data
。至于修复,您可以使用
const

const data = action.data
const groupsCopy2 = _.map(state.groups, () => {
  var b = data;
});