[英]Must there be a type assertion in non-initial reducers?
由於減速器的類型定義為
export type Reducer<T> = (state: T | undefined) => T | undefined;
在不是初始減速器的減速器中,我必須聲明
state = state as State
請問我有什么遺漏嗎?還是這是個小麻煩?
可以將非初始的reducer鍵入(在TypeScript中)為(state: T) => T
,它們將與庫中的Reducer<T>
類型兼容。 這是我代碼庫中的一個示例,第一個代碼片段是一個初始化約簡器,需要對未定義大小寫進行處理:
const initReducer$ = xs.of(function initReducer(prev?: State): State {
if (prev) {
return prev;
} else {
return {
selfFeedId: '',
currentTab: 0,
};
}
});
第二個片段是一個非初始化的reduce,我可以確定先前的狀態不是未定義的:
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$);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.