我开始了一个新项目,我想使用TypeScript而不是纯Javascript。我正在努力将Bluebird与第三方库结合使用。
请参阅以下示例:
import * as Promise from 'bluebird'
private requestPlayerProfile(playerTag:string):Promise<IPlayerProfile> {
const requestOptions = Object.create(this.options)
return this.limiter.schedule(request, requestOptions)
}
问题:limiter
是第三方库的一个实例,limiter.schedule显然返回原生承诺,而我在我的应用程序的其余部分使用Bluebird承诺。我如何妥善处理此类案件?
[ts]类型'承诺'不能分配给类型 “蓝鸟”。 “当时”的财产类型是 不兼容。
答案 0 :(得分:3)
@Filipe正在正确解释错误消息。
this.limiter.schedule(...)
返回的对象类型是什么,该类型与bluebird.Promise<IPlayerProfile>
不兼容。limiter.schedule(...)
返回“vanila”,即本机Promise<IPlayerProfile>
对象。您可以通过转到定义schedule(...)
的源代码轻松找到它。在我的Visual Studio代码中,我使用 F12 来实现目标。注意那里对象的精确返回类型。bluebird
的承诺;或bluebird
one。我没有尝试过,但以下情况应该有效:return Promise.resolve(this.limiter.schedule(request, requestOptions))
(见http://bluebirdjs.com/docs/api/promise.resolve.html)。我希望它有所帮助。