#typescript #firebase #google-cloud-firestore
# #машинописный текст #firebase #google-облако-firestore
Вопрос:
Я использовал 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';
Единственный способ, которым я мог найти эту временную метку импорта, был:
import * as firebase from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firebase.default.firestore.Timestamp;
}
Итак, каков правильный способ импортировать класс Timestamp?
Ответ №1:
В версии 8 все типы для всех продуктов Firebase должны поступать из «firebase / app». Обычно импорт начинается так, как вы видите в документации для пакетов модулей:
import firebase from "firebase/app"
НЕ используйте старую форму из версии 7:
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;
}
Ответ №2:
Для версии 9 это: импортировать {Timestamp} из ‘firebase / firestore’;