Firebase:firebase.Promise<any> 与 Rxjs Promise<any> 的兼容性

Posted

技术标签:

【中文标题】Firebase:firebase.Promise<any> 与 Rxjs Promise<any> 的兼容性【英文标题】:Firebase : firebase.Promise<any> compatibility with Rxjs Promise<any> 【发布时间】:2017-02-07 17:42:07 【问题描述】:

我正在尝试使用 angular-cli 生成的项目将 firebase.Promise 转换为 Observable

Here据说firebase.Promise兼容Native PromisePromise/A+的实现。

但是,当我尝试使用 rxjs 的 Observable.fromPromise() 方法时出现错误。

Argument of type 'firebase.Promise<any>' is not assignable to parameter of type 'Promise<any>'.                                                               
  Types of property 'then' are incompatible.                                                                                                                  
    Type '(onResolve?: (a: any) => any, onReject?: (a: Error) => any) => Promise<any>' is not assignable to type ' <TResult1, TResult2>(onfulfilled: (value: 
any) => TResult1 | PromiseLike<TResult1>, onrejected:...'.                                                                                                    
      Type 'firebase.Promise<any>' is not assignable to type 'Promise<any>'.

它确实有效,但是出错很烦人,有什么想法可以以一种干净的方式避免这个错误吗?

谢谢。

【问题讨论】:

你在使用 TypeScript 吗? 是的,我正在使用 TS 【参考方案1】:

在 TypeScript 中,您可以使用类型转换:

let promise = firebase.whatever();
Observable.fromPromise(<Promise<any>>promise);

【讨论】:

以上是关于Firebase:firebase.Promise<any> 与 Rxjs Promise<any> 的兼容性的主要内容,如果未能解决你的问题,请参考以下文章

数组中的 Firebase Promise 未及时解决

无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase

VueJS + Firebase 使用 Firebase 绑定

无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2

没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()

如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”