Доступ к типизированному экспресс-ответу - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь расширить тип express Response следующим образом:

class Registration {
  public static register(express: Application) {
    express.response.someFunction = function () {
      ...
    };
  }
}

Но я получаю эту ошибку Typescript:

Property 'response' does not exist on type 'Application'.

Какой тип я должен использовать вместо Application?

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете расширить интерфейс Response, предоставляемый express, используя расширение.Application не имеет свойства response, необходимо добавить функцию промежуточного программного обеспечения, чтобы добавить функцию к каждому запросу:

declare global {
    namespace Express {
        interface Response {
            someFunction(): string
        }
    }
}

class Registration {
    public static register(express: Application) {
        express.use((req, res, next) => {
            res.someFunction = function () {
                return "foo"
            };
        });
    };

}
Registration.register(app);

app.get("/", (req, res) => {
    res.someFunction();
    res.send({
        test: res.someFunction()
    })
})
...