Reactjs Immer reducer不适用于Typescript

Reactjs Immer reducer不适用于Typescript,reactjs,redux,immer.js,Reactjs,Redux,Immer.js,我在TypeScript中使用immer.js创建的reducer时遇到问题 我不明白以下几点: 当我在初始状态中使用对象文字{}时,不变性可以很好地工作,但只有一次 const byId = (state = {}, action) => produce(state, draft => { switch (action.type) { case RECEIVE_PRODUCTS: ... )

我在TypeScript中使用immer.js创建的reducer时遇到问题

我不明白以下几点:

当我在初始状态中使用对象文字{}时,不变性可以很好地工作,但只有一次

const byId = (state = {}, action) =>
    produce(state, draft => {
        switch (action.type) {
            case RECEIVE_PRODUCTS:
               ...
)
        }
    })
我将文本更改为对象不变性的实例停止工作

const byId = (state = new SomeObject(), action) =>
    produce(state, draft => {
        switch (action.type) {
            case RECEIVE_PRODUCTS:
               ...
)
        }
    })
你知道为什么吗


谢谢..

您通常希望
生成的第一个参数是普通对象或数组

它也可以是一个“immerable类”,虽然我不知道具体是什么(对我来说这听起来像是一个内部的东西),但它不太可能是您的
new SomeObject()
调用返回的

如果
product
的第一个参数不是这些参数之一,那么它将不会被“起草”


我已经创建了父对象

export class Immerable {
  public [immerable] = true;
}

我需要在product函数中使用的所有类都有这个父类。谢谢。

请分享
SomeObject()
的代码,什么是
product()
函数?