2016-05-04 25 views
4

我想使用express-boom与TypeScript进行快速处理。它缺乏类型,所以我想写我自己的。只是让它编译是微不足道的。如何为将属性添加到响应的中间件编写TypeScript定义?

该中间件装点res对象与属性boom(从boom module得出):

var express = require('express'); 
var boom = require('express-boom'); 

var app = express(); 

app.use(boom()); 

app.use(function (req, res) { 
    res.boom.notFound(); // Responsds with a 404 status code 
}); 

但随着打字稿我要投它,因为无论http.ServerResponseExpress.Response有繁荣的财产,当然是:

return (<any>res).boom.badRequest('bla bla bla'); 

哪种方法最干净?哪些是正在做类似事情的其他类型的中间件?

回答

2

还有其他很多Express中间件可以用作示例,例如, Method-Override,及其type definitions

至于更具体的例子,如果你想这个.boom属性添加到响应对象,你应该只需要创建一个类型定义包含(快车boom.d.ts):

declare namespace Express { 
    interface Boom { 
     // Add boom's properties in here 
    } 

    export interface Response { 
     boom: Boom 
    } 
} 
+0

超级,它的作品。只是一件事情,以及如何自动添加[繁荣]的所有[类型的方法](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/cc3d223a946f661eff871787edeb0fcb8f0db156/boom/boom.d.ts)到'繁荣'功能? – nkint

+0

不幸的是,我不认为你可以。你需要能够使用Boom命名空间作为一个类型,所以你可以在这里引用它,我不认为这是可能的,afaik。如果你确实找到了方法,我很乐意听到。 –

相关问题