【发布时间】: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