Не удалось создать пользовательский тип ответа в Express.js с помощью TypeScript

Я пытаюсь настроить свой собственный интерфейс Response, чтобы расширить некоторые методы вместо использования типа Response по умолчанию для Express.js, но получаю ошибку TypeScript:

Последняя перегрузка выдала следующую ошибку. Аргумент типа '(req: Запрос, разрешение: CustomResponse, следующий: NextFunction) => void' не является назначаемый параметру типа PathParams.ts(2769)

Я исследовал много разных способов решения этой проблемы, например: declare namespace но мне это не помогло, поэтому я решил выбрать другой способ, который является настраиваемым для моего интерфейса и расширяет интерфейс Response Express.js. Ниже мой код:

import { Response } from 'express';

interface CustomResponse extends Response {
   myMethod: () => void;
}

...

app.use((req: Request, res: CustomResponse, next: NextFunction) => {  // <=== error causing from CustomResponse
   res.myMethod();
});

🤔 А знаете ли вы, что...
С Node.js можно легко интегрировать с базами данных, такими как MongoDB и MySQL.


53
1

Ответ:

Решено

Вы можете явно ввести приведение типа этого

  app.use((req: Request, res: Response, next: NextFunction) => {  
       const customResponse = res as CustomResponse;
       customResponse.myMethod();
       //customResponse.send();
    });