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;
});