Typescript 相同的操作有2个错误:TS2554:应为0个参数,但得到1;TS2554:应为1个参数,但得到0。打字脚本+;redux工具包
我遇到了一个非常奇怪的问题,调用CreateSicle创建的操作返回两个冲突错误:Typescript 相同的操作有2个错误:TS2554:应为0个参数,但得到1;TS2554:应为1个参数,但得到0。打字脚本+;redux工具包,typescript,redux,redux-toolkit,Typescript,Redux,Redux Toolkit,我遇到了一个非常奇怪的问题,调用CreateSicle创建的操作返回两个冲突错误: export interface UffStatusState { fetchingPickStatus: APIState; activeMerchant: string | null; displayPicker: boolean | false; } const uffStatusSlice = createSlice({ name: "uffStatus", in
export interface UffStatusState {
fetchingPickStatus: APIState;
activeMerchant: string | null;
displayPicker: boolean | false;
}
const uffStatusSlice = createSlice({
name: "uffStatus",
initialState: {
fetchingPickStatus: APIState.idle,
activeMerchant: null,
displayPicker: false,
} as UffStatusState,
reducers: {
setfetchingPickStatus: (state, fetchingAction: PayloadAction<APIState>) => {
state.fetchingPickStatus = fetchingAction.payload;
},
setActiveMerchant: (state, activeMerchantAction: PayloadAction<string>) => {
state.activeMerchant = activeMerchantAction.payload;
},
setDisplayPicker: (state, display: PayloadAction<boolean>) => {
state.displayPicker = display.payload
},
}
});
export const { setfetchingPickStatus, setActiveMerchant, setDisplayPicker } = uffStatusSlice.actions;
export default uffStatusSlice.reducer;
导出接口UffStatusState{
fetchingPickStatus:APIState;
activeMerchant:字符串|空;
显示选择器:布尔值| false;
}
const uffStatusSlice=createSlice({
名称:“uffStatus”,
初始状态:{
fetchingPickStatus:APIState.idle,
activeMerchant:null,
显示选择器:false,
}作为UffStatusState,
减速器:{
setfetchingPickStatus:(状态,fetchingAction:PayloadAction)=>{
state.fetchingPickStatus=fetchingAction.payload;
},
setActiveMerchant:(状态,activeMerchantAction:PayloadAction)=>{
state.activeMerchant=activeMerchantAction.payload;
},
setDisplayPicker:(状态,显示:PayloadAction)=>{
state.displayPicker=display.payload
},
}
});
导出常量{setfetchingPickStatus,setActiveMerchant,setDisplayPicker}=uffStatusSlice.actions;
导出默认的uffStatusSlice.reducer;
以下是调用不带参数的操作时出现的两个冲突错误:
src/components/HeaderBar.tsx中出错:14:56 TS2554:应为0
参数,但得到1。
12 |
13 |导出默认函数HeaderBar(){
14 | const handleSelectMerchants=()=>useStoreDispatch(setDisplayPicker());
| ^^^^^^^^^^^^^^^^^^
15 |返回(
16 |
17 |
src/components/HeaderBar.tsx中出错:14:56 TS2554:应为1
参数,但得到0。
12 |
13 |导出默认函数HeaderBar(){
14 | const handleSelectMerchants=()=>useStoreDispatch(setDisplayPicker());
| ^^^^^^^^^^^^^^^^^^
15 |返回(
16 |
17 |
使用参数调用它,它将返回一个错误:
src/components/HeaderBar.tsx中出错:14:56 TS2554:应为0
参数,但得到1。
12 |
13 |导出默认函数HeaderBar(){
14 | const handleSelectMerchants=()=>useStoreDispatch(setDisplayPicker(true));
| ^^^^^^^^^^^^^^^^^^^^^^
15 |返回(
16 |
17 |
src/components/MerchantSelection.tsx:64:42 TS2554中出错:应为0
参数,但得到1。
62 | }
63|
64 | const onDismiss=()=>useStoreDispatch(setDisplayPicker(false));
| ^^^^^^^^^^^^^^^^^^^^^^^
65 |
66 |导出默认功能MerchantSelection(){
67 | const{displayPicker}=useStoreSelector((state)=>state.uffstoreseting)
如果你在一个实验室里测试它,这似乎是可行的
您的tsconfig.json中是否有任何不常见的设置?strict
是否设置为true
编辑:
您的错误实际上是另一个错误。您必须首先在组件中的某个位置使用const dispatch=useStoreDispatch()
,然后将该分派与dispatch(setDisplayPicker(true))
{“编译器选项”:{“目标”:“es5”,“allowJs”:true,“checkJs”:true,“skipLibCheck”:true,“esModuleInterop”:true,“allowSyntheticDefaultImports”:true,“strict”:true,“ForceConsistentCasingFileNames”:true,“module”:“esnext”,“ModuleResolveResolution”:“node”,“resolveJsonModule”:true,“isolatedModules”:true,“noEmit”:true,“jsx”:“preserve”,“lib”:[“dom”,“es2015”],“baseUrl”:“/”,”路径:{“src/*”:[“src/*”]},include:[“src”,“test/unittests”]}我尝试删除strict,它显示了相同的错误。您肯定应该有strict on,只是想确定一下。您的错误实际上是其他错误。您必须const dispatch=useStoreDispatch()
首先在组件中的某个位置,然后将该分派与分派一起使用(setDisplayPicker(true))