我正在尝试设置一个函数,该函数返回映射到相应操作类型名称的切片操作名称的类型安全 POJO(使用 sliceName/sliceAction 的约定)。该功能非常简单,但让 TypeScript 识别键让我很尴尬。
我正在关注Redux Toolkit 教程中的示例,但我想看看这是否可行。理想情况下,我将能够将该函数与 Redux-Saga 或 Redux-Observable 结合使用,以避免使用字符串文字作为操作类型。
我已经尝试设置了一个代码框。
const getActions = <T extends Slice>(slice: T) => {
const keys = Object.keys(slice.actions) as Array<keyof typeof slice.actions>;
return keys.reduce(
(accumulator, key) => {
accumulator[key] = `${slice.name}/${key}`;
return accumulator;
},
{} as Record<keyof typeof slice.actions, string>
);
};
目的是能够像这样进行切片:
const issuesDisplaySlice = createSlice({
name: "issuesDisplay",
initialState,
reducers: {
displayRepo(state, action: PayloadAction<CurrentRepo>) {
//...
},
setCurrentPage(state, action: PayloadAction<number>) {
//...
}
}
});
并获得一个 TypeScript 来识别输出:
{
displayRepo: string,
setCurrentPage: string
}
感谢您花时间阅读本文,我特别感谢任何花时间尝试解决它的人。我知道你的时间很宝贵:)