Я пытаюсь создать фабрику действий запроса. Каждое действие запроса должно иметь request
, success
и failure
.
В настоящее время я создаю действия таким образом (с пакетом typesafe-actions
):
const loadList = {
request: () => action(CampaignsRequestTypes.LOAD_REQUEST),
success: (data: CampaignState) => action(CampaignsRequestTypes.LOAD_SUCCESS, data),
failure: () => action(CampaignsRequestTypes.LOAD_FAILURE),
};
С что typescript
может вывести тип каждого объекта, допускающего ввод и автозаполнение, вот так:
loadList.request().type
Но я обнаружил, что везде пишу шаблоны request
, success
и failure
, поэтому я думаю создать фабрику, чтобы построить это, чтобы обеспечить соблюдение шаблона и облегчить написание, примерно так:
const loadList = new RequestAction(
() => action(CampaignsRequestTypes.LOAD_REQUEST),
(data: CampaignState) => action(CampaignsRequestTypes.LOAD_SUCCESS, data),
() => action(CampaignsRequestTypes.LOAD_FAILURE),
);
Дело в том, что с каждым подходом, который я пробовал, я всегда попадаю в случай, когда мне нужно определить тип параметров конструктора класса RequestAction
, но он определяется перегрузками класса action
, и у меня нет доступа к этому типу в конструкторе.
Есть ли способ определить тип параметров или, может быть, более разумный способ сделать эту фабрику с сохранением типа действий?