Firestore 9 Ошибка типографской записи onSnapshot: типы распространения могут быть созданы только из типов объектов. ts(2698)

# #javascript #typescript #firebase #google-cloud-firestore

Вопрос:

При вызове data() метода внутри функции Firestore 9 onSnapshot он возвращает объект, содержащий все поля в документе.

Но в моем коде ниже есть ошибка машинописного текста, в ...doc.data() которой говорится: Spread types may only be created from object types. ts(2698)

Итак, если data() возвращает объект, почему TypeScript жалуется, что это не объект?

 const unsubscribe = onSnapshot(  collectionOrdered,  (snapshot) =gt; {  snapshot.docs.forEach((doc) =gt; {  documents.push({ ...doc.data(), id: doc.id });  });  error.value = null;  console.log(documents);  },  (err) =gt; {  console.log(err.message);  documents.splice(0);  error.value = err.message;  }  );  

Ответ №1:

У меня возникли проблемы с его поиском, но, похоже doc , внутри snapshot нужно было напечатать как doc: DocumentData .

Полный пример кода:

 const unsubscribe = onSnapshot(  collectionOrdered,  (snapshot) =gt; {  snapshot.docs.forEach((doc: DocumentData) =gt; {  documents.push({ ...doc.data(), id: doc.id });  });  error.value = null;  console.log(documents);  },  (err) =gt; {  console.log(err.message);  documents.splice(0); //Clears reactive array  error.value = err.message;  }  );