我正在编写的函数旨在操作客户端代码或云函数中的Firestore数据。
不幸的是,firebase (用于客户端代码)和firebase-admin (用于云函数)的TypeScript类型虽然几乎相同,但却不兼容。除了导入和别名所有类型之外,还有没有其他的解决方案?
目前,我收到的错误如下:
Type 'FirebaseFirestore.DocumentReference' is not assignable to type 'firebase.firestore.DocumentReference'
这是因为我在客户机代码库中使用firebase定义接口,然后尝试初始化一个实例并使用firebase-admin在我的函数代码库中使用它。但是如果我交换了它们,同样的错误也会发生。
不幸的是,看起来Node Admin SDK TypeScript定义并不是客户端TypeScript定义的超集,即使它们看起来是从接口的角度来看的。
发布于 2019-04-09 02:02:32
您可以创建自己的接口来复制客户端和服务器SDK的公共元素,并在它们的实现周围实现一个包装器,以便根据需要进行切换。包装器将简单地委托给预期的目的地,还可能根据需要转换任何标记值,比如FieldValue.serverTimestamp()返回的值。
换句话说,没有简单的解决方案。这就像在多个实现上创建任何抽象一样,除了API通常不需要任何转换。
https://stackoverflow.com/questions/55578927
复制相似问题