Node.js 为什么在DefinitelyTyped`http.IncomingMessage`中定义为接口而不是类?

Node.js 为什么在DefinitelyTyped`http.IncomingMessage`中定义为接口而不是类?,node.js,typescript,Node.js,Typescript,正如Node.js的文档所述,http.IncomingMessage,不是一个接口。那么为什么要使用DefinitelyTypedhttp.IncomingMessage 现在在我的代码中,我无法做到这一点: import*作为“http”中的http; let Request=http.IncomingMessage; 类型脚本错误: [ts]类型“http”上不存在属性“IncomingMessage” 我做错了什么?我发现extendshttp.IncomingMessage的Node

正如Node.js的文档所述,
http.IncomingMessage
,不是一个接口。那么为什么要使用DefinitelyTyped
http.IncomingMessage

现在在我的代码中,我无法做到这一点:

import*作为“http”中的http;
let Request=http.IncomingMessage;
类型脚本错误:

[ts]类型“http”上不存在属性“IncomingMessage”


我做错了什么?

我发现extends
http.IncomingMessage的Node.js API确实不存在。这种方式更像是黑客和非正常的延伸:

http.IncomingMessage.prototype.absoluteUri = function absoluteUri(path) {
  // ...
};
我回答extends
http.IncomingMessage

var extendedRequest = {
  get userAgent() {
    this.request.headers['user-agent'];
  }
}

createServerCallback(function (req, res) {
  var request = Object.create(extendedRequest);
  request.request = req;
});

然后您应该像这样使用它的类:
let Request=http.IncomingMessage()
@ranakrunal9,no,
http.IncomingMessage
用于定义为接口的TypeScript,因此接口无法调用构造函数。因此,对于定义类型为
http.IncomingMessage
的变量,您应该执行:
让请求:http.IncomingMessage
@ranakrunal9,只需打开一个编辑器并检查自己。这不管用。