2016-05-04 13 views
4

私はTypeScriptでexpressとしてexpress-boomを使用したいと思います。それはタイピングが欠けているので、私は自分自身を書いてみたいです。ちょうどそれをコンパイルするのは簡単です。レスポンスにプロパティを追加するミドルウェアのTypeScript定義の書き方は?

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 
}); 

しかしtypescriptですと、私はhttp.ServerResponseExpress.Responseでもない、もちろん、ブームのプロパティを持っているので、それをキャストする必要があります:

は、このミドルウェアは(boom module由来)プロパティboomresオブジェクトを飾ります

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)を 'boom'関数に自動的に追加する方法はありますか? – nkint

+0

悲しいことに、私はあなたができるとは思わない。あなたはBoom名前空間を型として使うことができる必要があるので、ここでそれを参照することができます。私はそれが可能だとは思わない、afaik。私はあなたが方法を見つけたら聞くのが大好きです。 –

関連する問題