gpt4 book ai didi

javascript - Firestore 文档 typescript doc.data() 未定义?

转载 作者:行者123 更新时间:2023-11-30 19:18:31 24 4
gpt4 key购买 nike

目前正在清理一些代码并用 typescript 重写很多代码。我发现令我好奇的是以下代码:

    const userRef = firestore.collection('users').doc(userId);
const userDoc = await userRef.get();

if (userDoc.exists) {
const userData = userDoc.data();

const currentUserBalance = userData.balance ? userData.balance : 0;
}

现在 Typescript 会提示 userData 可能是 undefined,但是当我检查文档时,Documents .data() 不能是 undefined存在于我的 if block 中。只是想知道为什么会这样,以及我这里是否有逻辑问题。

最佳答案

TypeScript 不知道 existsdata() 之间的关系。它只知道 data() 的签名表示返回值可以是 DocumentSnapshot 或未定义。因此,您必须通过以下任一方式满足编译器的要求:

  1. 首先检查“真实性”,然后使用结果:
const data = userDoc.data()
if (data) {
// In this block, data is now typed as just DocumentData,
// undefined is no longer an option.
}
  1. 通过使用 ! 运算符告诉 TypeScript 您确定结果将是“真实的”:
const data = userDoc.data()!  // data is now typed as just DocumentData

关于javascript - Firestore 文档 typescript doc.data() 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com