Typescript不';t选择正确的过载 打字稿版本:2.1.4 @类型/猫鼬版本:4.7.1

Typescript不';t选择正确的过载 打字稿版本:2.1.4 @类型/猫鼬版本:4.7.1,typescript,mongoose,Typescript,Mongoose,我使用猫鼬的类型: post(方法:字符串,fn:( 错误:mongodb.MongoError,doc:T,next:(错误?:NativeError)=>void )=>void):这个; post(方法:字符串,fn:( doc:T,next:(错误?:NativeError)=>void )=>void):这个; 在我的代码中: 函数(模式:模式){ schema.post('remove',函数(doc,next){}); } 它总是选择第一个postdefine,doc将是mon

我使用猫鼬的类型:

post(方法:字符串,fn:(
错误:mongodb.MongoError,doc:T,next:(错误?:NativeError)=>void
)=>void):这个;
post(方法:字符串,fn:(
doc:T,next:(错误?:NativeError)=>void
)=>void):这个;
在我的代码中:

函数(模式:模式){
schema.post('remove',函数(doc,next){});
}
它总是选择第一个
post
define,
doc
将是
mongodb.MongoError
下一个
将是
T

我错过什么了吗?
如何让它选择second
post
define?

TypeScript总是选择与指定参数匹配的第一个重载。因为被调用方可能会忽略函数参数,这意味着接受高arity回调的函数应该在低arity回调之后

第二个重载更具体(它可以处理比前一个重载更低的总算术数的函数),因此在这种情况下,第二个重载应该列在第一个重载的上方

TL;DR:.d.ts文件存在错误,这两行
post
应该交换