2016-12-15 2 views
2
  • версия машинопись: 2.1.4
  • @ типов/версия мангуста: 4.7.1

Я использую типы Mongoose в:Машинопись не выбирает правильную перегрузку

post<T extends Document>(method: string, fn: (
    error: mongodb.MongoError, doc: T, next: (err?: NativeError) => void 
) => void): this; 

post<T extends Document>(method: string, fn: (
    doc: T, next: (err?: NativeError) => void 
) => void): this; 

в мой код:

function (schema: Schema) { 
    schema.post('remove', function (doc, next) { }); 
} 

Всегда выбирайте ель st post определить, doc будет mongodb.MongoError, next будет T.

Я что-то пропустил? и как это выбрать второй post определить?

ответ

0

TypeScript всегда выбирает перегрузку, которая соответствует указанным параметрам. Поскольку аргументы функции могут быть проигнорированы вызываемым пользователем, это означает, что функции, принимающие обратные вызовы с более высокой степенью вероятности, должны последовать за после обратных вызовов более низкой arity.

Вторая перегрузка более конкретна (она может обрабатывать функцию ниже общей сложности, чем предыдущая перегрузка), поэтому вторая перегрузка должна быть указана выше первой в этом случае.

TL; DR: .d.ts файл имеет ошибку, эти две строки post следует поменять местами.

+0

Благодарим вас за ответ! – 7Hd

Смежные вопросы