TypeScript要求提供泛型参数

我有以下功能:

异步函数get<U>(url:string):承诺<U>{
返回getUrl<u>(url);
}

但是,可以这样称呼它(TS将U设置为任意):

get('/user-url');

有没有一种方法可以定义这个函数,使得它需要显式地提供U,如中所示

get<用户>(“/用户url”);

没有对此的内置支持,但是我们可以设计一个场景,在该场景中,不传入类型参数将使用默认泛型类型参数和条件类型生成错误。也就是说,我们将给U一个默认值void。如果默认值是U的实际值,那么我们将在函数中键入不应真正传入的参数,以获取错误:

异步函数get<U=无效>(url:string&(U extends void?)您必须提供一个类型参数:string)):Promise<U>{
返回空值,如有;
}
获取('/user url');//“”类型/user url“”的错误参数不能分配给“”类型的参数“您必须提供一个类型参数””。
类用户{}
获取<用户>(“/用户url”);

这个错误消息并不理想,但我认为它会让人明白

编辑:有关在参数类型中使用类型参数的解决方案,请参见此处

发表评论