Я уже некоторое время пытаюсь сделать что-то, что должно быть очень простым, но я продолжаю сталкиваться с проблемами.
Как правильно деструктурировать параметр снимка в облачной функции пожарного хранилища и назначать типы?
Вот как работает код:
export default (region: any) =>
functions
.region(region)
.firestore.document(
"organisations/{organisationID}/workspaces/{workspaceID}"
)
.onCreate(
async (snap: FirebaseFirestore.DocumentSnapshot, context: functions.EventContext) => {
const data = snap.data() as CustomType
...do something else
}
}
Вместо этого я пытаюсь избежать начального const data = snap.data() as CustomType
внутри функции:
export default (region: any) =>
functions
.region(region)
.firestore.document(
"organisations/{organisationID}/workspaces/{workspaceID}"
)
.onCreate(
async ({data, ref}:{data:()=> CustomType, ref:FirebaseFirestore.DocumentReference }, context: functions.EventContext) => {
...do something else
}
}
Но когда я пытаюсь это делать, я получаю ошибки:
Argument of type '({ data, ref }: { data: () => CustomType; ref: FirebaseFirestore.DocumentReference; }, context: functions.EventContext) => Promise<void>' is not assignable to parameter of type '(snapshot: DocumentSnapshot, context: EventContext) => any'.
Types of parameters '__0' and 'snapshot' are incompatible.
Type 'DocumentSnapshot' is not assignable to type '{ data: () => CustomType; ref: DocumentReference; }'.
The types returned by 'data()' are incompatible between these types.
Type 'DocumentData | undefined' is not assignable to type 'CustomType'.
Type 'undefined' is not assignable to type 'CustomType'.
Type 'undefined' is not assignable to type
Я делаю что-то не так? И если это не так, есть ли способ заставить тип возвращаемого значения (аналогично тому, когда я объявляю const data = snap.data() as CustomType
)?