当我在typescript中创建服务器主机名时,我得到了No重载匹配此调用问题



我试图在typescript文件中创建一个新服务器,但它给了我一个警告。

没有与此调用匹配的重载。

上一次过载导致以下错误。类型的参数"string"不可分配给"number"类型的参数。ts(2769(

net.d.ts(480,9(:最后一个过载在这里声明。

我的代码

const port: string | number = process.env.PORT || 9999;
const host = '127.0.0.1';
http.createServer((req, res) => {
}).listen(port, host, () => {
console.log(`I'm listening host: ${host} & port: ${port}`)
})

然后我去了net.d.ts(480,9(,我相信我匹配这些函数中的一个

listen(port?: number, hostname?: string, listeningListener?: () => void): this;

函数listen的参数port只能是一个数字(如果存在(,因此必须将env变量强制转换为一个数字:

import http from 'http';
const port: number = Number(process.env.PORT) || 9999;
const host = "127.0.0.1";
http
.createServer((req, res) => {})
.listen(port, host, () => {
console.log(`I'm listening host: ${host} & port: ${port}`);
});

为了使您当前的代码能够工作,必须有一个允许portnumber | string:的重载

listen(port?: number | string, hostname?: string, listeningListener?: () => void): this;

最新更新