Al llamar al método data() dentro de una función onSnapshot de Firestore 9, devuelve un objeto que contiene todos los campos del documento.
Pero en mi código a continuación hay un error de TypeScript en ...doc.data() que dice: Spread types may only be created from object types. ts(2698)
Entonces, si data() devuelve un objeto, ¿por qué TypeScript se queja de que no es un objeto?
const unsubscribe = onSnapshot( collectionOrdered, (snapshot) => { snapshot.docs.forEach((doc) => { documents.push({ ...doc.data(), id: doc.id }); }); error.value = null; console.log(documents); }, (err) => { console.log(err.message); documents.splice(0); error.value = err.message; } );Tuve problemas para encontrarlo, pero parece que el doc dentro de la snapshot necesitaba escribirse como doc: DocumentData .
Ejemplo de código completo:
const unsubscribe = onSnapshot( collectionOrdered, (snapshot) => { snapshot.docs.forEach((doc: DocumentData) => { documents.push({ ...doc.data(), id: doc.id }); }); error.value = null; console.log(documents); }, (err) => { console.log(err.message); documents.splice(0); //Clears reactive array error.value = err.message; } );