Redux Toolkit切片与TypeScript期望0个参数,但得到1



我有切片

const investment = createSlice({
name: 'investments',
initialState,
reducers: {
getInvestmentsRequest(state) {
state.investments.status = RequestStatuses.loading;
},
}
})

动作被中间件拦截。中间件使用有效负载。但是在切片中,我不需要使用有效负载。如果我将payload设置为第二个参数,eslint将抛出未使用的变量错误。调用者的代码:

dispatch(getInvestmentsRequest({ term: product.term }));

我有TS错误Expected 0 arguments, but got 1.

谁知道如何解决这个类型检查冲突与TS, Redux工具包(切片)和Redux -saga ?

如果你有一个很好的理由在那里添加第二个参数(毕竟你想为一般类型安全指定一个有效负载类型,即使它没有在那里使用),那么eslint规则就是没有意义的,并且会积极地阻碍你做一些有用的事情。

关键在于:你可以主动控制这些eslint规则。以一种对你有意义的方式维护它们是你的责任。
近藤麻理惠:如果它不能激发快乐,那就摆脱它。

您可以配置no-unused-vars规则标记为筛选错误的内容。在这种情况下,您可能希望将argsIgnorePattern设置为不警告任何名为action的参数。

试着写

/*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^(_|action)" }]*/

在你的文件的顶部,当它做你想要的移动到你的.eslintrc.js配置文件。

由于TypeScript会检查类型安全,它不允许我们在没有定义相应形参的情况下向函数传递实参。

getInvestmentsRequest(state, action) {
state.investments.status = RequestStatuses.loading;
}

如果要传递值给这个函数,必须定义action参数,否则typescript会抛出错误。动作参数是一个对象,它有一个名为payload的属性,该属性指向你要传递给这个函数的值。

如果要使用术语value,可以使用以下命令:

state.investments.term = action.payload.term;

最新更新