我正在使用 package.json 中的这些依赖项:
"@reduxjs/toolkit": "^1.9.5",
"react-redux": "^8.1.2",
"redux-devtools-extension": "^2.13.9",
"eslint": "^9.16.0",
"typescript-eslint": "^8.17.0",
因为 redux takeit 设置我在减速器定义中使用
immer
,所以我有这样的定义:
export const clubSlice = createSlice({
...
reducers: {
...
tableUnassigned: (
state,
action: PayloadAction<UnassignTableResponse>,
) => {
const { gameId, tableNumber } = action.payload;
const key = `${gameId}_${tableNumber}`;
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
delete state.tableAssignments[key];
},
eslint 规则
@typescript-eslint/no-dynamic-delete
建议使用 Map 来代替。 但是,强烈建议 redux 切片坚持使用普通的旧 JavaScript 对象,因此我无法在没有序列化问题的情况下使用 Map,特别是如果我要添加 redux-persist
。
那么,当我想在 redux 减速器中使用 immer 从普通的旧 JavaScript 对象中删除元素时,避免违反 eslint 规则的最佳实践是什么?除了像上面的代码片段那样禁用它之外,在仍然使用 immer 的虚假可变性的同时,是否有更好的选择来避免此 lint 错误?
这条规则显然不会让您对正在使用的工具做出正确的决定,所以这对您来说是错误的规则。
也就是说,您也可以指定
@typescript-eslint/no-dynamic-delete
。虽然不是 100% 相同,但结果非常相似。
undefined