Я пытаюсь создать новый «общий» модуль для моей команды. одна из вещей, которую он должен включить, - это расширение объекта ответа и запроса (express).
мы хотели бы достичь двух вещей - первое - это расширение Request, чтобы иметь свойство user - это будет реализовано в промежуточном программном обеспечении, которое выполняет всю аутентификацию за нас.
Второе - мы хотели бы создать соглашение о том, как мы возвращаем ошибку, поэтому я хочу расширить тип ответа express, чтобы есть метод с именем sendError, который получит исключение / erormsg и создаст ответ. => Я хочу сделать больше, чем просто расширить интерфейс, я хочу дать ему значение.
До сих пор я создал новый модуль, в нем я создал файл types.d.ts и добавил это файл в мои "типы" в tsconfig.
import {User} from '../models/user.ts'
declare module 'express'{
export interface Request {
user: User;
}
}
в моем moudle, я вижу подходящего пользователя для запроса, и все прекрасно работает. проблема в том, что когда наш сервис устанавливает этот модуль с npm, он не знаком с этим свойством.
Второй вопрос, как мне выполнить мой второй трагет? это больше расширение интерфейса, это больше похоже на расширение класса, потому что я хочу дать заключение
Я думал о чем-то таком:
import {User} from '../models/user.ts'
declare module 'express'{
export interface Response {
sendError: (statusCode : number, error :Error ) => void;
}
}
express.Response.sendError = //put the logic here