如何在打字稿中正确声明React-Redux选择器

时间:2020-08-19 16:48:49

标签: typescript react-redux

我正在尝试将我的应用设置为使用Redux来存储状态。我有一个使用createSlice的文件,并且定义了我的reducer,我也想在那里定义选择器。但是,据我了解,选择器将redux存储的完整状态作为参数。问题是,我怎么知道在定义切片的位置上使用哪种类型的参数?我无法导入调用configureStore的文件,因为configureStore正在导入我的切片(这将导致周期性导入)。我觉得我想念什么。这是供参考的代码段:

export const slice = createSlice({
    name: "timer",
    initialState: {
        clock: {
            running: false,
            elapsedMs: 0,
        },
        splitTimes: [],
    } as TimerState,
    reducers: {
        start: (state) => {
            if (!state.clock.running) {
                state.clock = {
                    running: true,
                    baselineMs: Date.now() - state.clock.elapsedMs,
                };
            }
            return state;
        },
        stop: (state) => {
            if (state.clock.running) {
                state.clock = {
                    running: false,
                    elapsedMs: Date.now() - state.clock.baselineMs,
                };
            }
            return state;
        },
        split: (state) => {
            if (state.clock.running) {
                state.splitTimes.push({
                    timeMs: Date.now() - state.clock.baselineMs,
                });
            }
            return state;
        },
        reset: (state) => {
            state.splitTimes = [];
            state.clock = {
                running: false,
                elapsedMs: 0,
            };
            return state;
        },
    },
});

export const selectClock = (state: *What type should this be?*) => state.timer.clock;

0 个答案:

没有答案