我正在编写旨在在客户端代码或云功能内操纵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定义的超集。
答案 0 :(得分:1)
您可以创建自己的接口,该接口复制客户端和服务器SDK的常见元素,并围绕它们的实现实现包装,以根据需要进行切换。包装器将简单地委派给预期的目标,并且可能还会根据需要转换任何哨兵值,例如FieldValue.serverTimestamp()返回的值。
换句话说,没有简单的解决方案。就像在多个实现上创建任何抽象一样,只是API通常不需要任何翻译。