修复 `firebase-admin` 和 `firebase` 包之间的类型不兼容

Tre*_*eer 7 firebase typescript google-cloud-firestore

我正在编写旨在在客户端代码或云函数中操作 Firestore 数据的函数。

不幸的是,似乎用于firebase(用于客户端代码)和firebase-admin(用于云函数)的 TypeScript 类型虽然几乎相同,但不兼容。除了导入和别名所有类型之外,还有人有解决方案吗?

目前,我收到如下错误:

Type 'FirebaseFirestore.DocumentReference' is not assignable to type 'firebase.firestore.DocumentReference'

这是因为我在我的客户端代码firebase库中使用firebase-admin. 但是如果我交换它们,也会发生同样的错误。

不幸的是,看起来 Node Admin SDK TypeScript 定义不是 Client TypeScript 定义的超集,即使它们从接口的角度来看似乎是这样做的。

Dou*_*son 2

您可以创建自己的界面,复制客户端和服务器 SDK 的公共元素,并围绕其实现实现包装器以根据需要进行切换。包装器将简单地委托给预期的目的地,并且还可能根据需要转换任何哨兵值,例如 FieldValue.serverTimestamp() 返回的值。

换句话说,没有简单的解决方案。这就像在多个实现上创建任何抽象一样,只是 API 通常不需要任何转换。