我刚刚使用 Rematch 从 typescript 4.1.2 升级到 4.3.2。使用这些复赛包:
- “@rematch/core”:“2.0.1”
- “@重新匹配/选择”:“3.0.1”
我遇到了一个打字稿错误:Type never
has no call signatures。我查看了第 3 方的代码,发现never
当我在同名的特定模型中有减速器和效果时,RematchDispatch 会给出类型。例如:
export const myModel = createModel<RootModel>()({
state: { ... },
reducers: {
myReducer(state, payload: string) { ... }
},
effects: dispatch => ({
myReducer(payload: string, rootState) { ... }
}
}
并且RematchDispatch<RootModel>['myModel']['myReducer']
type 将给出“从不”类型,例如,由于上述打字稿错误,我不能通过 react 组件中的 useDispatch 调用它。
我还检查了文档:https ://rematchjs.org/docs/api-reference/models并找到了这个
与 reducer 共享名称的效果函数在其对应的 reducer 之后调用。
这似乎是一个有效的案例,它在我的项目中一直有效,直到这次打字稿升级,所以这个问题可能与重新匹配和打字稿混合有关。
你能帮我解决这个问题吗?我做错了什么?
提前致谢!