Raf*_*olo 2 firebase typescript google-cloud-firestore
我使用的是 firebase 7.16.1,我以这种方式导入并声明一个属性作为时间戳:
import { firestore } from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firestore.Timestamp;
}
Run Code Online (Sandbox Code Playgroud)
但升级到 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)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下导入,所有导入都正常,但导入上不存在时间戳。
import firestore from "../../../node_modules/firebase";
import firestore from 'firebase';
import firestore from 'firebase/app';
Run Code Online (Sandbox Code Playgroud)
我发现导入时间戳的唯一方法是:
import * as firebase from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firebase.default.firestore.Timestamp;
}
Run Code Online (Sandbox Code Playgroud)
那么导入 Timestamp 类的正确方法是什么?
在 v8 中,所有 Firebase 产品的所有类型都应来自“firebase/app”。通常像这样开始导入,正如您在模块捆绑器的文档中看到的那样:
import firebase from "firebase/app"
Run Code Online (Sandbox Code Playgroud)
不要使用 v7 中的旧形式:
import * as firebase from "firebase/app" // this no longer works the way you expect
Run Code Online (Sandbox Code Playgroud)
时间戳可以在 中找到firebase.firestore.Timestamp。
import firebase from 'firebase/app';
export class CourseEventMessage {
sentTimestamp: firebase.firestore.Timestamp;
}
Run Code Online (Sandbox Code Playgroud)
如果您想稍微缩写一下,请使用类型别名:
type Timestamp = firebase.firestore.Timestamp;
export class CourseEventMessage {
sentTimestamp: Timestamp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |