当使用新的启用了打字稿功能的reactjs时,超出了最大调用堆栈大小

时间:2019-07-06 16:13:42

标签: reactjs typescript redux-orm

我使用新的打字稿支持的reactjs

与redux-orm一起使用,当您尝试向存储中插入值时,出现“超出最大调用堆栈大小”的问题,与旧模板相同

下面是带有新的打字稿支持的reactjs的代码,它引发错误 https://reactjs.org/docs/static-type-checking.html#typescript和有效的旧github版本https://github.com/microsoft/TypeScript-React-Starter

https://drive.google.com/open?id=15eolNjeYroyubgSmbGaaKfjxbe-IZ8KK

我无法理解导致新版本错误的不同之处。感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

不能直接在Model类上定义属性。

根本原因在于 create-react-app 的babel预设-编译输出在 Model 原型链中引入了其他属性描述符。

这些属性会干扰模式注册期间 redux-orm 安装的描述符,从而导致Maximum call stack size exceeded错误。

可以通过声明合并来避免这种情况,特别是通过提供具有匹配名称的类和接口。该接口包含Model个属性,该类与JS Model定义几乎是1:1。

示例:

interface Book {
    id: number
    title: string
}

class Book extends Model<typeof Book> {
    static modelName = 'Book' as const

    static fields = {
        id: attr(),
        title: attr()
    }
}

我创建了一个带有示例的仓库:https://github.com/tomasz-zablocki/redux-orm-ex-types-react-example

请记住,这些是自定义类型,但肯定是我想要将@types/redux-orm软件包带到的地方,很可能是redux-orm的0.14版本。