В настоящее время я работаю над проектом, который включает Typescript 3+ и Express 4+ и узел 8+.Я пытаюсь расширить объект Response Express для отправки кодов состояния HTTP, если API обнаруживает ошибку, например.Кажется, я не могу понять, как расширить объект Response, не используя Middleware для определения расширенной функции Response, которую я хочу добавить.Я хотел бы иметь возможность просто использовать прототип Response для определения функций, которые я хочу добавить, но я не знаю или не могу понять, возможно ли это.Вот что я сделал:
projectA / декларации / express.extensions.d.ts:
import * as e from "express"
declare global {
namespace Express {
interface Response {
send100(): e.Response;
}
}
}
export {}
ниже, где я хотел бы определить определение функции прототипа, как это так, но этоне компилируется ...
projectA / extensions / ResponseExtensions.ts
import * as e from "express";
import { Response } from "express-serve-static-core";
Response.prototype.send100 = function(): e.Response {
var response = this as Response;
response.status(100).end();
}
и, наконец, потребляет ...
ProjectB / Server.ts
import * as express from "express"
app.get('/getData'
request: express.Request,
response: express.Response) : void {
// yada yada...
response.send100();
}
Кажется, я не могу заставить сценарий ResponseExtensions.ts перемещаться, и единственный другой способ реализовать это - запустить промежуточное ПО, где я определяю функцию, но это будет происходить для каждого отдельного запроса.Есть варианты, которые я изучаю, или промежуточное ПО - единственный путь?
Спасибо.