2016-05-04 4 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.ServerResponse и Express.Response имеют свойство бум, конечно:

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

Какой самый чистый способ сделать это? Что такое другое типизированное промежуточное ПО, которое делает подобную вещь?

ответ

2

Существует немало других экспресс-сред, которые вы можете использовать в качестве примеров, например. 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. Я бы хотел услышать, если вы все-таки найдете способ. –

 Смежные вопросы

  • Нет связанных вопросов^_^