chr*_*ber 3 node.js express typescript typescript1.6
我想将Express.js与Typescript 一起使用以指定更具模块化/ OO的代码。
我想通过实现IRoute接口,然后将新的Route添加到app.use()来实现Route / Controller。
我面临的问题是每个操作(get,post,put,delete)本身都会返回IRoute接口,但我不确定要返回什么。返回
return <IRoute> this;操作无效。
打字稿编译器响应并显示以下错误消息:
MessurmentsController类错误地实现了IRoute接口。属性类型是
all不兼容的。类型(req: Request, res: Response, next: Function) => void不可分配给type (...handler: RequestHandler[]): IRoute。类型参数req和handler有incomatible。类型Request不可分配给typeRequestHandler。
/// <reference path="../../../typings/tsd.d.ts" />
import {IRoute, Request,Response} from 'express';
export class MeasurementsController implements IRoute {
path: string;
stack: any;
constructor(){
this.path = "/api/measurements"
}
all(req: Request, res: Response, next: Function){
res.send('');
//return <IRoute> this;
}
get(req: Request, res: Response, next: Function){
res.send('');
}
post(req: Request, res: Response, next: Function){
res.send('');
}
put(req: Request, res: Response, next: Function){
res.send('');
}
delete(req: Request, res: Response, next: Function){
res.send('');
}
patch(req: Request, res: Response, next: Function){
res.send('');
}
options(req: Request, res: Response, next: Function){
res.send('');
}
head(req: Request, res: Response, next: Function){
res.send('');
}
}Run Code Online (Sandbox Code Playgroud)
d.ts中的Route定义为
module e {
interface IRoute {
path: string;
stack: any;
all(...handler: RequestHandler[]): IRoute;
get(...handler: RequestHandler[]): IRoute;
post(...handler: RequestHandler[]): IRoute;
put(...handler: RequestHandler[]): IRoute;
delete(...handler: RequestHandler[]): IRoute;
patch(...handler: RequestHandler[]): IRoute;
options(...handler: RequestHandler[]): IRoute;
head(...handler: RequestHandler[]): IRoute;
}Run Code Online (Sandbox Code Playgroud)
我需要进行一次手术以恢复正常工作的想法吗?
最终出现了一个解决方案:
routing-controllers允许使用方法作为处理请求的方法来创建控制器类。您可以将路由控制器与express.js或koa.js一起使用。 https://github.com/pleerock/routing-controllers
| 归档时间: |
|
| 查看次数: |
4766 次 |
| 最近记录: |