问题描述
我正在尝试从 react-hook-forms
中理解这个 TypeScript 签名:
handleSubmit: <TSubmitFieldValues extends FieldValues = TFieldValues>(onValid: SubmitHandler<TSubmitFieldValues>,onInvalid?: SubmitErrorHandler<TFieldValues>) => (e?: React.BaseSyntheticEvent) => Promise<void>;
特别是,但不仅仅是我想了解:
-
泛型类型中的等号是什么意思?
<TSubmitFieldValues extends FieldValues = TFieldValues>
-
签名里怎么会有两个箭头?
[removed for shortening] => (e?: React.BaseSyntheticEvent) => Promise<void>
如果有人能一步一步解释签名就好了,谢谢!
解决方法
泛型中的等号是什么意思?
这是默认类型。
签名里怎么会有两个箭头?
这是一个返回另一个函数的函数。例如这个函数:
const myWeirdAdd = arg1 => arg2 => arg1+arg2;
我们可以这样称呼吗:
myWeirdAdd(1)(2); // returns 3;
它的类型是:
type CurriedAdd = (arg1: number) => (arg2: number) => number;