类型上不存在属性 - redux-thunk 等待调度
Posted
技术标签:
【中文标题】类型上不存在属性 - redux-thunk 等待调度【英文标题】:Property does not exist on type - redux-thunk await dispatch 【发布时间】:2021-06-26 17:43:57 【问题描述】:我在https://github.com/reduxjs/redux-toolkit/issues/485#issuecomment-610654378 处描述了这个确切的问题
所以我直接导入了 ThunkDispatch 并使用它。如果不抛出 property does not exist
错误,我无法从调度响应中获取任何密钥
@reduxjs/toolkit@1.5.1
const response = await dispatch(deactivateSubscription(args))
const response: PayloadAction<ApiResponse<EmptyBodyResponse>, string,
arg: DeactivateSubscriptionArgs;
requestId: string;
requestStatus: "fulfilled";
, never> | PayloadAction<...>
export interface ApiResponse<T = unknown>
body: T
error: Error
success: boolean
message?: string
TS2339: Property 'error' does not exist on type 'PayloadAction<ApiResponse<EmptyBodyResponse>, string, arg: DeactivateSubscriptionArgs; requestId: string; requestStatus: "fulfilled"; , never> | PayloadAction<...>'.
Property 'error' does not exist on type 'PayloadAction<ApiResponse<EmptyBodyResponse>, string, arg: DeactivateSubscriptionArgs; requestId: string; requestStatus: "fulfilled"; , never>'.
149 |
> 150 | if (!response.error)
| ^^^^^
151 | setIsEditing(false)
152 |
153 |
【问题讨论】:
【参考方案1】:根据the createAsyncThunk
docs,createAsyncThunk
不返回实际的“响应”。相反,它返回“已调度的最终操作对象”,以避免代码中出现“未捕获的被拒绝的 Promise”错误。
您可以unwrap the result action 获取组件中的实际数据。
另外,请确保you are using a Dispatch
type that correctly understands thunks。
【讨论】:
谢谢unwrapResult
是缺少的链接!谢谢
当然。请注意,在即将发布的 RTK 版本中,我们将直接在返回的 Promise 上提供 .unwrap()
方法:github.com/reduxjs/redux-toolkit/issues/…以上是关于类型上不存在属性 - redux-thunk 等待调度的主要内容,如果未能解决你的问题,请参考以下文章
TS2570 错误协助:“Promise<User>”类型上不存在属性“sendEmailVerification”。您是不是忘记使用“等待”?