很抱歉,这个问题是否适合您,但我仍想找出解决方法。如标题中所述,我正在尝试减少redux中的样板。这是问题所在:
我有ApiUtils.ts
,我的动作是ApiActions
(后来是ApiReducer
,但这是一个单独的问题)。
我的ApiUtils
主要具有如下功能:
export function updateUserAPI(id: string, data: Partial<User>) {
return axios.put<User>(`${usersUrl}/${id}`, data)
}
我的问题是,鉴于我正在使用https://github.com/piotrwitek/typesafe-actions#createaction中的creatAction
,因此我想自动执行其中一些操作并提供类型安全性。
现在,设置操作如下所示:
export const updateUser = createAction('UPDATE_USER', resolve => (user: Partial<User>) => resolve({ user }))
即,我希望具有某种形式:function createApiAction<fn> { ... }
,可以在其中提供ApiUtils.updateUserAPI,然后它将推断出resolve => (user: Partial<User>) => resolve({ user})
参数的签名。
我不太确定该怎么做。我一直在玩打字稿3.0+和infer
中的元组arg,但是不确定如何将它们绑在一起以获得我想要的东西