我有一个函数可以从Firebase中的DB获取所有文档--函数本身可以用于检索任何类型的文档,这就是为什么我需要指定它用泛型返回的内容。
我现在正在做这个:
export const getAllDocuments = async <DocType>(collectionName: string) => {
const documents: DocType[] = [];
const querySnapshot = await getDocs(collection(db, collectionName));
querySnapshot.forEach((doc) => {
documents.push({
id: doc.id,
...doc.data(),
});
});
return documents;
};但是我得到了这个错误:"TS2345:类型'{ id: string;}‘的参数不能分配给'DocType’类型的参数。‘DocType’可以用与'{ id: string;}‘无关的任意类型实例化?“?
我这样调用这个函数:
const documents = await getAllDocuments<ExerciseDocument>('exercises');我在这里做错了什么?)
发布于 2022-01-07 20:34:14
你可以试试
const getAllDocuments = async <T extends { id: string }>(arg: string) => {
const documents: T[] = [];
array.forEach(() => {
documents.push({
id: '123'
} as T);
});
return documents;
};https://stackoverflow.com/questions/70626090
复制相似问题