属性'toDate'在类型'FieldValue |中不存在。时间戳记”,但工作方法

时间:2019-08-13 13:14:53

标签: angular typescript firebase google-cloud-firestore timestamp

我正在使用Cloud Firestore存储聊天记录,我想按lastestMessage.created对其进行排序。我无法使用该查询,因为我将其用于其他用途,因此我正在使用SORT函数来进行查询。

我在VS Code上始终收到此错误:

属性'toDate'在类型'FieldValue |中不存在。时间戳”。

但是,代码可以正常运行,可以对其进行比较并正确返回。控制台中没有错误。

      chats.sort(function (a, b) {
        if (b.latestMessage.created && a.latestMessage.created) {
          return b.latestMessage.created.toDate() - a.latestMessage.created.toDate();
        }
      });


(parameter) a: {
    contractId?: string;
    members: any;
    contact: any;
    latestMessage?: Message;
    id?: string;
    created?: firebase.firestore.FieldValue | firebase.firestore.Timestamp;
    modified?: firebase.firestore.FieldValue | firebase.firestore.Timestamp;
}

令人讨厌的是,在我编译时此错误错误一直显示,并且可以完美运行...

1 个答案:

答案 0 :(得分:1)

您的createdmodified属性都被键入以接受s FieldValue或Timestamp类型的对象。我不清楚这是什么必要。由于编译器不知道它是哪一个,因此只能调用它们共有的方法,因此toDate不是值。

如果您希望它成为可以调用toDate的Timestamp类型,则必须从可能的类型中删除FieldValue或将值强制转换为Timestamp,这样编译器才能确切知道您认为要处理的内容