我有一个使用preact-cli和preact-cli-typescript-plugin设置的项目。一切都可以编译,运行和正常运行,但是我不知道如何导入Firebase功能的打字稿声明。这是一个问题的例子。
import { CollectionReference, DocumentSnapshot, Firestore } from 'firebase/firestore';
import { Observable } from 'rxjs';
export default class FirestoreDatabase {
private readonly itemCollection: CollectionReference;
constructor(firestore: Firestore) {
this.itemCollection = firestore.collection('items');
}
items(): Observable<DocumentSnapshot> {
return Observable.create(observer =>
this.itemCollection.onSnapshot(observer)
);
}
}
该类工作正常,可以完成预期的工作,但我得到警告:
[ts] Could not find declaration file for module 'firebase/firestore'. '[project root]/node_modules/firebase/firestore/dist/index.cjs.js' implicitly has type of any.
在第一行代码中四次。 Firebase及其功能模块的所有类型都在node_modules / firebase / index.d.ts中,但是我不确定如何让编译器看到它。
答案 0 :(得分:0)
我想我已经解决了。我不应该导入CollectionReference,DocumentSnapshot和Firestore。相反,我需要使用类型的完全限定名称,例如firebase.firestore.Firestore
。我还可以使用类型别名来使其更短:
type Firestore = firebase.firestore.Firestore
type CollectionReference = firebase.firestore.CollectionReference;
type QuerySnapshot = firebase.firestore.QuerySnapshot;