无法从getSelectors推断selectId中的正确类型



我用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>有多难。

相关内容

  • 没有找到相关文章

最新更新