如何阅读带有多个箭头和泛型的TypeScript签名?



我试图理解这个TypeScript签名从react-hook-forms:

handleSubmit: <TSubmitFieldValues extends FieldValues = TFieldValues>(onValid: SubmitHandler<TSubmitFieldValues>, onInvalid?: SubmitErrorHandler<TFieldValues>) => (e?: React.BaseSyntheticEvent) => Promise<void>;

我特别想明白,但不仅是我想明白:

  1. 泛型类型中的等号是什么意思?

    <TSubmitFieldValues extends FieldValues = TFieldValues>

  2. 签名中怎么会有两个箭头?

    [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;

最新更新