在Typescript中将定义添加到现有模块中

我正在努力与Typescript和修改现有模块的定义。

我们习惯于把所有我们想要输出的东西放到“res.out”中,最后还是有这样的“res.json(res.out)”。 这使我们能够在发送响应的时候对应用程序进行全面控制。

所以我有这样的function

export async function register(req: Request, res: Response, next: Next) { try { const user = await userService.registerOrdinaryUser(req.body) res.status(201); res.out = user; return helper.resSend(req, res, next); } catch (ex) { return helper.resError(ex, req, res, next); } }; 

我们正在使用restify。 我得到编译错误,因为“out”不是restify.Response的一部分。

现在我们有了解决方法,我们有我们自己的“对象”,扩展了Restify的对象。

 import { Server as iServer, Request as iRequest, Response as iResponse, } from 'restify' export interface Server extends iServer { } export interface Request extends iRequest { } export interface Response extends iResponse { out?: any; } export {Next} from 'restify'; 

我们只是这样做,使项目编译,但寻找更好的解决scheme。 我尝试过这样的事情:

 /// <reference types="restify" /> namespace Response { export interface customResponse; } interface customResponse { out?: any; } 

但它不起作用,现在它说“重复的标识符响应”“。

那么任何人如何添加定义restify.Response对象与一些简单的代码?

您可以使用界面合并 。

 import { Response } from "restify"; declare module "restify" { interface Response { out?: any } }