Проблема в том, что второй объект, переданный функции, не соответствует объявленному для нее типу, который равен morgan.Options
. Из-за этого компилятор пересекает перегрузку с 'combine'
в качестве аргумента и, в конечном счете, при обнаружении несоответствующей перегрузки выберет последнюю перегрузку, чтобы сообщить об ошибке, выдавая довольно запутанное сообщение об ошибке.
Литерал объекта, который вы передаете, не соответствует morgan.Options
, потому что stream
должен иметь тип interface StreamOptions { write(str: string): void;}
, а поле objectMode
вообще не существует на morgan.Options
(по крайней мере, в стандартной версии с дополнения, я не установил Winston
)
Приведенный ниже код проходит проверки компилятором (обратите внимание, что я на самом деле не запускал этот код, я не знаком с morgan
, просто предоставляющим справку об ошибке типа машинописного текста):
morgan('combined', {
stream: {
write: (meta: any) => {
this.log.info("Request served", meta);
},
}
});