【问题标题】:Type 'Promise<Document>' is not assignable to type 'Promise<Document>'类型“Promise<Document>”不可分配给类型“Promise<Document>”
【发布时间】:2016-09-18 12:29:55
【问题描述】:

我正在使用 Promise 来避免回调地狱。

但我遇到了类型转换问题。

这是我的方法或函数定义:

findById(entityId: string): Promise<mongoose.Document> {
    return this._model.findById(entityId).exec();
}

打字稿提示一些错误:

[ts] 类型“Promise”不可分配给类型“Promise”。 'then' 的属性类型不兼容。 类型 '(onFulFill: (result: Document) => void | U | Promise, onReject?: (err: any) => void | U | P...' 不可分配给类型 '{ (onfulfilled?: (value : Document) => TResult | PromiseLike, onrejected?: (reas...'. “Promise”类型不能分配给“Promise”类型。 “Promise”类型中缺少属性“catch”。

我想知道如何取消这个问题?

【问题讨论】:

  • 您正在使用两种不同的Promise 类型。您在函数签名中声明返回的与exec() 返回的不同。
  • this._model 是 mongoose 对象,exec() 将返回 Promise
  • 据我所见,mongoose 使用的是 A+ promise 库,这是与原生实现不同的实现。你似乎把它们都混在一起了
  • 这是我的代码:github.com/JeffreyChan/loma_online_testing 你可以看到,我没有使用其他实现承诺,只是猫鼬承诺。
  • 那是很多代码,我不打算全部介绍。请使用相关代码更新您的问题。

标签: mongoose typescript promise


【解决方案1】:

检查正在使用的不同承诺类型。在我的例子中,一个文件正在导入 es6-promise 而另一个不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2020-06-29
    • 2019-03-04
    相关资源
    最近更新 更多