在将typescript与firebase函数一起使用时,我遇到了问题,尤其是当我从snapshot.data()
获取值时
snapshot
本身默认使用firebase键入,但是如何指定返回的data()
的形状?
默认情况下,snapshot.data()
的类型为DocumentData | undefined
,它来自firebase,我需要将其更改为以某种方式成为此特定数据的接口。
答案 0 :(得分:3)
您有几种语法选择:
interface Foo {
a: string
b: number
}
const foo1 = snapshot.data() as Foo // cast it
const foo2 = <Foo> snapshot.data() // also cast it
使用这两种方法中的任何一种,您都可以使用对象分解将其字段转换为变量,如您的答案所示:
const { a, b } = foo1 // automatically assign a and b
如果需要,您可以重新定义局部变量:
const { a: my_a, b: my_b } = foo1 // assigns my_a and my_b instead
这完全是TypeScript,实际上与数据库API无关。
答案 1 :(得分:0)
对于遇到相同问题的任何人,解决方案如下
interfacse ICharacterData = {
username: string,
race: string,
skinTone: string,
gender: string
}
并将其应用于快照数据
const { username, race, skinTone, gender } = <ICharacterData>snapshot.data()