Извините, если этот вопрос некорректен, но я застрял, пытаясь понять, как это сделать.Как описано в заголовке, я пытаюсь уменьшить шаблон в редуксе.Вот проблема:
У меня есть ApiUtils.ts
, и мои действия ApiActions
(и позже, ApiReducer
, но это отдельная проблема).
Мои ApiUtils
в основном имеют функцииэто выглядит так:
export function updateUserAPI(id: string, data: Partial<User>) {
return axios.put<User>(`${usersUrl}/${id}`, data)
}
У меня вопрос, учитывая, что я использую creatAction
из https://github.com/piotrwitek/typesafe-actions#createaction, Я бы хотел автоматизировать некоторые из них и обеспечить безопасность типов.
Прямо сейчас настройка действий выглядит примерно так:
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
, но не уверен, как связать их вместе, чтобы получить то, что я хочу