Hur man korrekt importerar Timestamp-klassen från Firebase (8+) med TypeScript
Jag använde Firebase 7.16.1 och jag importerade och deklarerade en egenskap som Timestamp på detta sätt:
import { firestore } from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firestore.Timestamp;
}
Men efter uppgraderingen till Firebase 8.1.2 får importen ett fel:
Module '"../../../node_modules/firebase"' has no exported member 'firestore'. Did you mean to use 'import firestore from "../../../node_modules/firebase"' instead?ts(2614)
Jag har försökt med följande importer, alla importeras utan problem, men ingen tidsstämpel finns på importen.
import firestore from "../../../node_modules/firebase";
import firestore from 'firebase';
import firestore from 'firebase/app';
Det enda sättet jag kunde hitta som importerade Timestamp var:
import * as firebase from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firebase.default.firestore.Timestamp;
}
Så vad är det korrekta sättet att importera Timestamp-klassen?
Svar #1
I v8 bör alla typer för alla Firebase-produkter komma från "firebase/app". Det är vanligt att starta en import på detta sätt, som du ser i dokumentationen för modulbundlare:
import firebase from "firebase/app"
Använd INTE den gamla formen från v7:
import * as firebase from "firebase/app" // this no longer works the way you expect
Tidsstämpel kan hittas i firebase.firestore.Timestamp.
import firebase from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firebase.firestore.Timestamp;
}
Om du vill förkorta det lite, använd en typalias:
type Timestamp = firebase.firestore.Timestamp;
export class CourseEventMessage {
sentTimestamp: Timestamp;
}
Svar #2
För v9 är det: import { Timestamp } från 'firebase/firestore';
