我试图实现一个函数。这个函数有6个参数。我定义了一个类型,而不是单独地将类型分配给参数。
下面是类型:
export type HandleLoginParamTypes = {
e: React.FormEvent<EventTarget>;
navigate: NavigateFunction;
link: string;
data: LoginDataType;
setError: React.Dispatch<React.SetStateAction<string>>;
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
};
下面是我如何为函数参数赋值的:
const handleLogin = async (
{e,navigate, link,data,setError,setLoading}: HandleLoginParamTypes
) => {
//function code
}
现在当我试着像这样调用这个函数时:
handleLogin(e, navigate, "/login", { emailId, password }, setError, setLoading)
我收到此错误:
TS2554: Expected 1 arguments, but got 6.
我不明白为什么6个参数都是一个参数,请指导。
1条答案
按热度按时间aiazj4mn1#
你的函数签名使用了 parameter destructuring,它说:“这个函数有一个参数,一个
HandleLoginParamTypes
类型的对象;当函数被调用时,从一个对象参数中获取这六个属性的列表,并将它们作为参数提供。”但是调用它的代码并没有将这些属性作为单个参数传递给它,而是传递了六个离散的参数。或者:
1.更新函数以接受六个参数(可能不是一个好主意,太容易在参数列表中丢失),
或
1.更新调用以提供单个对象,并将
e
等作为该对象的属性。下面是第二条:
或者,由于该行有点长: