Angular 如何在reducer中处理Map类型

Angular 如何在reducer中处理Map类型,angular,typescript,ngrx,Angular,Typescript,Ngrx,正在进行ng2 typescript项目。 这应该是直截了当的。我需要在商店里放一张地图,但由于某种原因它不起作用: 我进行了以下调试: case relationActions.ActionTypes.SET_RELATIONSHIPS: { console.log('reducer'); console.log(action.payload); return Object.assign({}, state, { relationShips: action.payload

正在进行ng2 typescript项目。 这应该是直截了当的。我需要在商店里放一张
地图
,但由于某种原因它不起作用: 我进行了以下调试:

case relationActions.ActionTypes.SET_RELATIONSHIPS: {
  console.log('reducer');
  console.log(action.payload);
  return Object.assign({}, state, {
    relationShips: action.payload
  });
}
日志显示了我期望的
映射
,但redux开发工具显示:

relationShips(pin): null => {}
是因为
Object.assign()
无法处理
Map

解决方案是什么?

纯Javascript映射是可变的,您不应该将其用作一种还原状态

如果你真的想使用一个映射结构,你应该看看(->)

如果您不想使用Immutable.js,您应该有这样的状态来模拟地图的内容:

{
  [`yourId1`]: 'value 1',
  [`yourId2`]: 'value 2',
  // ...
}

并使用
对象操作它。分配

不应该或不能?可以
对象。分配
处理
地图
?我不这么认为。这就是为什么不可变js可以变得方便的原因