打字稿中的 Bluebird 和 es6 promises

Bluebird and es6 promises in typescript

我开始了一个新项目,我想在其中使用 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 returns 显然是原生承诺,而我在应用程序的其余部分使用 Bluebird 承诺.我该如何妥善处理这种情况?

[ts] Type 'Promise' is not assignable to type 'Bluebird'. Types of property 'then' are incompatible.

@Filipe 正在正确解释错误消息。

  • 无论 this.limiter.schedule(...) 编辑的对象类型是什么 return,该类型都与 bluebird.Promise<IPlayerProfile> 不兼容。
  • 没有人可以可靠地假设 limiter.schedule(...) return 是 "vanila",即原生的 Promise<IPlayerProfile> 对象。您可以通过转到定义 schedule(...) 的源代码轻松弄清楚。在我的 Visual Studio 代码中,我使用 F12 到达那里。请注意那里对象的精确 return 类型。
  • 根据 returned 的具体内容,您有两个主要选择:
    1. 在您的代码中的任何地方使用该承诺类型,而不是完全依赖 bluebird 的承诺;或
    2. . I have not tried myself, but the following should work: return Promise.resolve(this.limiter.schedule(request, requestOptions)) (see http://bluebirdjs.com/docs/api/promise.resolve.html).

希望对您有所帮助。