Условные типы и вывод в машинописи, чтобы уменьшить шаблон редукса - PullRequest
0 голосов
/ 05 июля 2019

Извините, если этот вопрос некорректен, но я застрял, пытаясь понять, как это сделать.Как описано в заголовке, я пытаюсь уменьшить шаблон в редуксе.Вот проблема:

У меня есть 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, но не уверен, как связать их вместе, чтобы получить то, что я хочу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...