我正在尝试使用Express路由器和Typescript中的类来组织路由。到目前为止,这是我尝试过的。 index.ts
文件应该引用notes.ts
文件中的Notes类,该类通过私有方法公开端点。
例如,我有一个文件index.ts
import * as express from "express";
import rootRoutes from "./root";
import { Notes } from "./notes";
import accountRoutes from "./account";
const router: express.Router = express.Router();
router.use("/", rootRoutes);
router.use("/account", accountRoutes);
router.use("/notes", Notes.routes);
export = router;
和另一个文件notes.ts
:
import express, { Router, Request, Response, NextFunction } from "express";
const router: express.Router = express.Router();
export class Notes {
constructor() {
this.routes();
}
private routes(): void {
//Get notes
router
.route("/")
.get((req: Request, res: Response, next: NextFunction) => {
res.send("notes");
});
}
}
我在这里想念什么?
答案 0 :(得分:0)
您正在调用私有方法router.use("/notes", Notes.routes);
要像以前一样使用它,首先必须实例化该类或使该方法静态。
将类实例状态与路由器状态混合可能会很棘手,请尝试使其不具有任何实例状态。
我也建议您将实现简化为以下形式:
export class Notes {
static handler(req: Request, res: Response): void {
res.send('Hello from A!')
}
}
app.get('/', Notes.handler);