Продолжайте печатать на фабрике типов generi c - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь создать фабрику действий запроса. Каждое действие запроса должно иметь 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, и у меня нет доступа к этому типу в конструкторе.

Есть ли способ определить тип параметров или, может быть, более разумный способ сделать эту фабрику с сохранением типа действий?

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