В настоящее время logi c содержит функцию, которая обрабатывает определенную c часть записи данных, хранящихся в firestore:
private listenUserData (): void {
this.unListenUserData = FirebaseDb
.collection(`users`).doc(this.user.id)
.collection(`userData`)
.onSnapshot({ includeMetadataChanges: true }, (querySnapshot) => {
const changes = getUserDataSnapshotChanges(querySnapshot)
const { data, changeType } = changes
data.config && this.handleConfigChanges(data.config, changeType)
data.personalData && this.handlePersonalDataChanges(data.personalData)
})
}
... она использует утилиту, которая обрабатывает querySnapshot и возвращает объект :
export function getUserDataSnapshotChanges (querySnapshot: any): UserDataSnapshotChangesType {
const changes: UserDataSnapshotChangesType = {
data: {},
changeType: ``,
isEmpty: querySnapshot.empty
}
querySnapshot.docChanges().forEach((docChange: any) => {
const { doc } = docChange
changes.data[doc.id] = doc.data()
changes.changeType = docChange.type
})
return changes
}
, как вы могли видеть на данный момент, QuerySnapshot и docChange используют любой тип, поскольку, пытаясь что-то вроде import { DocumentChange } from 'firebase'
, я немного изучил index.d.ts из firebase и следующий тип является частью пространства имен firebase.firestore
:
Буду очень признателен, если кто-нибудь поделится некоторыми идеями по этому делу:
1. это означает, что нет фактического способа импортировать этот тип, если он является частью неэкспортируемого пространства имен?
2. И если теперь, что может быть возможным способом получить доступ к firestore ради кода типа safe