在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 } }