redux 减速器流量不推断类型

通斯特里

我在执行flow docs 中的基本 redux-reducer 示例时遇到了流程错误

此处添加到代码中的流程错误:在REMOVEswitch 案例中:action未解析为正确的类型。

如果我将鼠标悬停payload在 vscode 中,在这种ADD情况下它显示为AddAction,但在REMOVE情况下它显示为所有操作的联合,即Action.

我错过了什么或理解错误?流量应扣除正确的类型从下Actions工会的唯一可能的类型中ifswitch

// @flow
const initialState = [];

type Item = { id: number, data: string };
type State = Item[];

type AddAction = {
  type: 'ADD',
  payload: Item
};

type RemoveAction = {
  type: 'REMOVE',
  payload: { id: number }
};

type ClearAction = {
  type: 'CLEAR'
};

type Action = AddAction | RemoveAction | ClearAction;

const reducer: (State, Action) => State = (state = initialState, action) => {
  switch (action.type) {
    case 'ADD': {
      return [...state, action.payload];
    }

    case 'REMOVE': {
      return state.filter(t => t.id !== action.payload.id);
                                               ^ property `payload`. Property not found in
    }

    case 'CLEAR': {
      return [];
    }

    default:
      (action: empty);
      return state;
  }
};

export default reducer;
通斯特里

好的,问题似乎是使用了action内部Array.filter箭头函数:

如果我将REMOVE案例内容替换为

case 'REMOVE': {
  const id = action.payload.id;
  return state.filter(t => t.id !== id);
}

错误消失了。

我猜 flow 无法推断箭头函数内的类型。知道为什么会很有趣。

编辑:相关问题

因此, flow 使联合细化无效,因为它假定 filter() 可能对 reducer 参数actiondocs产生副作用在使用之前将操作或有效负载存储在常量中可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

redux减速器类型“从不”

来自分类Dev

React.js Redux 减速器不插入项目

来自分类Dev

Redux 减速器不更新密钥

来自分类Dev

减速器不更新反应 redux 中的状态

来自分类Dev

在Typescripted Redux中,如何找到根减速器的类型?

来自分类Dev

反应redux减速器不改变

来自分类Dev

测试Redux组合减速器

来自分类Dev

Redux:区分减速器中的对象

来自分类Dev

如何返回Redux减速器的状态

来自分类Dev

反应redux减速器不改变

来自分类Dev

设计/组合 redux 减速器

来自分类Dev

Redux - 保持相关的减速器同步

来自分类Dev

Redux 反应根减速器变慢

来自分类Dev

Redux 减速器作为纯函数

来自分类Dev

redux 减速器中的打字稿

来自分类Dev

用于嵌套 redux 存储属性的 Redux 减速器

来自分类Dev

Redux:减速器收到的先前状态具有意外的“函数”类型

来自分类Dev

反应在父级减速器与子级减速器中完成的Redux逻辑

来自分类Dev

React Redux-减速器之间的共享状态(减速器层次结构)

来自分类Dev

为什么Redux减速器必须无副作用?

来自分类Dev

将嵌套的Redux智能组件与减速器连接

来自分类Dev

Redux –减速器,取决于其他状态

来自分类Dev

React-Redux:合并减速器失败

来自分类Dev

React-Redux:合并减速器:意外的键

来自分类Dev

Redux动作/减速器与直接设置状态

来自分类Dev

Redux:从combinedReducers和“ loose”属性创建根减速器

来自分类Dev

Redux减速器-更改深度嵌套的状态

来自分类Dev

在redux中是否可以嵌套化径减速器?

来自分类Dev

redux-减速器状态为空