Не начальные редукторы могут быть напечатаны (в TypeScript) как (state: T) => T
, и они будут совместимы с типом Reducer<T>
, найденным в библиотеке. Вот пример из моей кодовой базы, первый фрагмент кода является исходным редуктором, который должен обрабатывать случай для неопределенного:
const initReducer$ = xs.of(function initReducer(prev?: State): State {
if (prev) {
return prev;
} else {
return {
selfFeedId: '',
currentTab: 0,
};
}
});
Этот второй фрагмент не является начальным редуктором, и я уверен, что предыдущее состояние не является неопределенным:
const setSelfFeedId$ = ssbSource.selfFeedId$.map(
selfFeedId =>
function setSelfFeedId(prev: State): State {
return {...prev, selfFeedId};
},
);
Обратите внимание, что при объединении этих потоков результирующий тип может быть Stream<Reducer<State>>
без приведения:
const reducer$: Stream<Reducer<State>> = xs.merge(initReducer$, setSelfFeedId$);