2016-12-30 83 views
2

正如所說的Node.js的文檔,http.IncomingMessageis a class,而不是一個接口。那麼爲什麼在DefinitelyTyped http.IncomingMessagedefined as interface爲什麼在DefinitelyTyped`http.IncomingMessage`定義爲接口,而不是類?

[ts] Property 'IncomingMessage' does not exist on type 'typeof "http"'.

我做錯了什麼:

現在在我的代碼,我不能做到這一點:

import * as http from 'http'; 
let Request = http.IncomingMessage; 

打字稿錯誤?

+0

其類,那麼你應該使用它想:'讓請求= http.IncomingMessage();' – ranakrunal9

+0

@ ranakrunal9,no,'http.IncomingMessage'定義爲TypeScript接口,所以接口不能調用構造函數。 – ktretyak

+0

因此,爲了定義'http.IncomingMessage'類型的變量,你應該這樣做:'let Request:http.IncomingMessage;' – ranakrunal9

回答

0

我看到真的不存在用於擴展http.IncomingMessage的Node.js API。這種方式多爲黑客和不正常的擴展:

http.IncomingMessage.prototype.absoluteUri = function absoluteUri(path) { 
    // ... 
}; 

found this回答擴展http.IncomingMessage

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

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