چگونه کلاس 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';
