繁体   English   中英

我无法理解 generics 在 nodejs 模块 http.d.ts 中的这段代码中是如何使用的

[英]I am not able to understand how generics are used in this code in nodejs module http.d.ts

  type RequestListener<
        Request extends **typeof IncomingMessage = typeof IncomingMessage**,
        Response extends **typeof ServerResponse = typeof ServerResponse**,
    > = (req: InstanceType<Request>, res: InstanceType<Response> & { req: InstanceType<Request> }) => void;

这里的粗体部分是什么意思

我想试试 hit and try 方法看看它是什么意思。 但我不知道如何以及在这里检查什么。 我认为该请求扩展了 IncomingMessage 类型,但不知道这怎么可能。

如果你有一个像IncomingMessage的 class ,则typeof IncomingMessage是该 class 的构造函数 function的类型(而IncomingMessage是类实例的类型)。 因此,该代码表示Request是一个构造函数 function,它扩展了IncomingMessage构造函数 function。(对于Response也是如此。)

= ____部分说明了如果没有明确提供类型参数的默认值。 所以如果你做了listener: RequestListener; ,类型参数将采用它们的默认值( typeof IncomingMessagetypeof ServerResponse ),但如果您使用listener: RequestListener<X, Y> ,则类型参数将采用值XY

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM