看起来您正在尝试匹配此重载(4 个中的 2 个):
export declare function useMutation<
TData = unknown,
TError = unknown,
TVariables = void,
TContext = unknown
>(
mutationFn: MutationFunction<TData, TVariables>,
options?: UseMutationOptions<TData, TError, TVariables, TContext>
): UseMutationResult<TData, TError, TVariables, TContext>;
该useMutation
钩子有 4 个泛型类型参数。我认为您打算使用Params
asTVariables
但实际上是TError
在将其放在useMutation<Response, Params>()
. 这就是为什么你最终会在代表unknown
的类型中得到一个。MutationFunction
TVariables
该函数的签名是:
export declare type MutationFunction<
TData = unknown,
TVariables = unknown
> = (
variables: TVariables
) => Promise<TData>;
您的问题中没有很多信息,所以我填写如下空白:
type Params = {
something: string;
}
const api = async (args: {data: Params}): Promise<Response> => {
return fetch('');
}
const setFriendCode = (data: Params) => api({ data })
您在这里基本上有两种可能的方法:
- 您可以在挂钩上设置泛型
useMutation
并包含一些值TError
const object = useMutation<Response, unknown, Params>(
setFriendCode
)
- 您可以推断类型并确保您的参数具有强类型。有了我穿上的类型
api
,setFriendCode
我得到了<Response, unknown, Params, unknown>
。
const object = useMutation(
setFriendCode
)