Определение типа комбинированного состояния редуктора в реагировать-нативный (машинопись) - PullRequest
0 голосов
/ 04 июля 2019

Я использую машинопись, и до сих пор я использовал тип любой , чтобы определить тип моего комбинированного редуктора.Сегодня я решил добавить тип для моего комбинированного редуктора, но VSCode показывает разные ошибки.

Вот как я определил мой редуктор:

type TState = {
  [CombinedReducerKeys.FilterMenuReducer]: fromFilterMenuReducer.TReducer;
  [CombinedReducerKeys.RequestBulletinReducer]: fromRequestBulletinReducer.TReducer;
  [CombinedReducerKeys.DashboardReducer]: fromDashboardReducer.TState;
  [CombinedReducerKeys.IssueBoardReducer]: fromIssueBoardReducer.TState;
  [CombinedReducerKeys.CreateIssueReducer]: fromCreateIssueReducer.TState;
};

const combinedReducersObj: TState = {
  [CombinedReducerKeys.FilterMenuReducer]: FilterMenuReducer,
  [CombinedReducerKeys.RequestBulletinReducer]: RequestBulletinReducer,
  [CombinedReducerKeys.DashboardReducer]: DashboardReducer,
  [CombinedReducerKeys.IssueBoardReducer]: IssueBoardReducer,
  [CombinedReducerKeys.CreateIssueReducer]: CreateIssueReducer,
};
const combinedReducer = combineReducers(combinedReducersObj);

export const getIssue = (state: any) =>
  fromCreateIssueReducer.getIssue(state[CombinedReducerKeys.CreateIssueReducer]);

export default combinedReducer;

CombinedReducerKeys Перечень ключей для редуктора
из import* как из из ;

Как вы видите, я только что экспортировал свой TState.И это была ошибка, которую VSCode показывал тогда:

Inintial VSCode error when only TState was exported

Затем я создал комбинированный тип из TState и TAction как:

export type TReducer = TState & TAction;

Но это ошибка, которую теперь выдает VSCode:

Error that is shown by VSCode when TState & TAction was exported

Это типы, которые я определил для FilterMenuReducer:

export type TReducer = TAction & TState;

type TAction = {
  type: FilterMenuTypes;
  sortByType?: SortByTypes;
  newPriority?: PriorityTypes;
  newStatus?: string;
  newType?: RequestTypes;
  timestamp?: number;
  author?: string;
};

export type TState = {
  sortBy: SortByTypes;
  priority: PriorityTypes[];
  status: StatusTypes;
  type: RequestTypes[];
  createdOnBegin: number;
  createdOnEnd: number;
  dueOnBegin: number;
  dueOnEnd: number;
  authorFilterKey: string;
  selectedAuthors: string[];
  loadedAuthors: TAuthor[];
};

Может кто-нибудь подсказать мне, как правильно определить тип для моего состояния комбинированного редуктора?

...