我用createEntityAdapter
设置了一个简单的redux存储。初始状态包含和实体、ID、状态、错误设置等
const carouselEventAdapter = createEntityAdapter<CarouselEventStateInterface>()
const initialState = carouselEventAdapter.getInitialState({
entities: { //some data here },
ids: [1,2],
status: 'idle',
error: null,
})
const carouselEventSlice = createSlice({
name: 'carouselEvent',
initialState,
reducers: {},
extraReducers: {},
})
export const {
selectIds,
selectById,
} = carouselEventAdapter.getSelectors<RootState>( state => state.carouselEvent)
// export const {} = carouselEventSlice.actions
export default carouselEventSlice.reducer
当我尝试调用selectIds函数时,它会显示类型为EntityId[]
,而我希望number[]
为eventids
的类型
const eventids = useSelector(selectIds)
有人能纠正我的类型吗?因为我到处都在找答案,但没有运气
通过在初始状态中包含id: [1,2]
,切片的状态类型将变为ids: number[]
。但实体适配器仅使用EntityId
。
作为一种变通方法,您可以直接从状态中选择ids
,而无需使用getSelectors
const useSelector = createSelectorHook<RootState>();
const eventIds = useSelector(state => state.carouselEvent.ids );
这得到了类型EntityId[] & number[]
,它只是number[]
。
打字游戏场链接
现在你让我想知道redux工具包类型在这里支持通用<I extends EntityId = EntityId>
有多难。