چگونه کلاس Timestamp را از firebase (نسخه 8+) با استفاده از Typescript به درستی وارد کنیم


من از فایربیس نسخه ۷.۱۶.۱ استفاده میکردم و داشتم یک ویژگی را به این صورت به عنوان Timestamp وارد و اعلام میکردم:

import { firestore } from 'firebase/app';

export class CourseEventMessage {
  sentTimestamp: firestore.Timestamp;
}

اما پس از ارتقا به فایربیس ۸.۱.۲، وارد کردن با خطا مواجه میشود:

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

من از وارداتهای زیر استفاده کردهام، همهی آنها به درستی وارد شدهاند، اما در میان وارداتها هیچ Timestamp وجود ندارد.

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 چیست؟

پاسخ شماره ۱

در v8، تمام نوعها برای تمام محصولات فایربیس باید از "firebase/app" بیایند. معمولاً وارد کردن به این شکل آغاز میشود، همانطور که در مستندات برای باندلرهای ماژول میبینید:

import firebase from "firebase/app"

از فرم قدیمی نسخه ۷ استفاده نکنید:

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

میتوان زمانسنجی را در 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;
}

پاسخ شماره ۲

برای v9 این است: import { Timestamp } from 'firebase/firestore';