gpt4 book ai didi

Typescript 没有选择正确的重载

转载 作者:搜寻专家 更新时间:2023-10-30 22:01:10 26 4
gpt4 key购买 nike

  • typescript 版本:2.1.4
  • @types/ Mongoose 版本: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) { });
}

总是选择第一个post定义,doc会是mongodb.MongoErrornext会是T.

我错过了什么吗? 以及如何让它选择第二个 post define?

最佳答案

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

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

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

关于Typescript 没有选择正确的重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com