修复了firebase-admin和firebase软件包之间的类型不兼容

时间:2019-04-08 17:41:13

标签: typescript firebase 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定义的超集。

1 个答案:

答案 0 :(得分:1)

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

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