【问题标题】:How to proper import Timestamp class from firebase (8+) using Typescript如何使用 Typescript 从 firebase (8+) 正确导入 Timestamp 类
【发布时间】:2020-12-09 17:59:09
【问题描述】:

我使用的是 firebase 7.16.1,我正在以这种方式导入属性并将其声明为时间戳:

import { firestore } from 'firebase/app';

export class CourseEventMessage {
  sentTimestamp: firestore.Timestamp;
}

但是升级到 firebase 8.1.2 后,导入出现错误:

Module '"../../../node_modules/firebase"' has no exported member 'firestore'. Did you mean to use 'import firestore from "../../../node_modules/firebase"' instead?ts(2614)

我尝试了以下导入,所有导入都正常,但导入时不存在时间戳。

import firestore from "../../../node_modules/firebase"; 
import firestore from 'firebase';
import firestore from 'firebase/app';

我发现导入 Timestamp 的唯一方法是:

import * as firebase from 'firebase/app';

export class CourseEventMessage {
    sentTimestamp: firebase.default.firestore.Timestamp;
}

那么导入 Timestamp 类的正确方法是什么?

【问题讨论】:

    标签: typescript firebase google-cloud-firestore


    【解决方案1】:

    在 v8 中,所有 Firebase 产品的所有类型都应来自“firebase/app”。像这样开始导入是很典型的,正如您在模块捆绑器的 documentation 中看到的那样:

    import firebase from "firebase/app"
    

    不要使用 v7 中的旧形式:

    import * as firebase from "firebase/app"  // this no longer works the way you expect
    

    Timestamp 可以在firebase.firestore.Timestamp 中找到。

    import firebase from 'firebase/app';
    
    export class CourseEventMessage {
        sentTimestamp: firebase.firestore.Timestamp;
    }
    

    如果您想稍微缩写一下,请使用类型别名:

    type Timestamp = firebase.firestore.Timestamp;
    export class CourseEventMessage {
        sentTimestamp: Timestamp;
    }
    

    【讨论】:

      【解决方案2】:

      对于 v9: 从'firebase/firestore'导入{时间戳};

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-29
        • 2020-01-18
        • 2019-09-12
        • 2023-02-11
        • 2021-03-13
        • 2018-10-24
        • 1970-01-01
        • 2018-06-10
        相关资源
        最近更新 更多