【发布时间】:2022-10-04 17:06:47
【问题描述】:
我想为 http.createServer(opt,fn) 提供我自己的自定义 http.IncomingMessage 和 http.ServerResponse 类。
我一直在寻找大约 2 小时来在 typescript 中找到解决方法。但这没有帮助。但是同样的代码也适用于 JS 。请帮我 。
我只想为 http.createServer() 提供一个自定义请求和响应对象。
这是我的服务器.jsJAVASCRIPT 文件。
const { createServer, IncomingMessage, ServerResponse } = require("http");
class Request extends IncomingMessage {
constructor(socket) {
super(socket);
}
getMeAnything() {
return "you got REQUEST";
}
}
class Response extends ServerResponse {
constructor(req) {
super(req);
}
getMeAnything() {
return "you got RESPONSE";
}
}
const server = createServer(
{
IncomingMessage: Request,
ServerResponse: Response,
},
(req, res) => {
console.log(req.getMeAnything());
res.end("Hello How are you ?");
}
);
server.listen(3000);
这是我的服务器.ts打字稿文件:
import { Socket } from "net";
import { createServer, IncomingMessage, ServerResponse } from "http";
class Req extends IncomingMessage {
constructor(socket: Socket) {
super(socket);
}
getMeAnything() {
return "you got anything inside REQUEST";
}
}
class Res extends ServerResponse {
constructor(req: IncomingMessage) {
super(req);
}
getMeAnything() {
return "you got anything inside RESPONSE";
}
}
const server = createServer(
{
IncomingMessage: Req,
ServerResponse: Res,
},
(req: Req, res: Res) => {
// here I get a big fat error . Some suggested me to write @ts-ignore . But I think there is a solution for it .
console.log(req.getMeAnything());
res.end("Hello How are you ?");
}
);
server.listen(3000);
【问题讨论】:
标签: javascript node.js typescript typescript-typings nodejs-server