我有一个类似的函数:
async queryAll(): Promise<Product[]> {
const response = await this.firestore.collection('products').get();
return response.docs.map(a => a.data());
}
获取错误:
类型“DocumentData[]”不能分配给类型“Product[]”。类型“DocumentData”缺少类型“Product”中的以下属性:ID,名称
如何为这个方法添加正确的返回类型?
我在firebase/index.ts.d
中可以看到什么,get
函数类型看起来像什么(我使用的是npm firebase包):get(options?: GetOptions): Promise<QuerySnapshot<T>>;
但不知道如何将其应用到我的代码中。
3条答案
按热度按时间new9mtju1#
我已经找到了解决方案,需要使用withConverter,以便在从firestore集合中检索数据时添加类型
添加了工作示例,
dbQuery
函数中的result
应具有正确的类型,例如Product[]
bq3bfh9z2#
我发现使用TypeScript的类型Assert功能非常简单。
对于单个文档:
对于快照:
当您在文档快照上调用
data()
时,其类型将为Product
。omjgkv6w3#
使用withConverter为集合分配泛型类型的泛型解决方案
然后,像这样使用它: