找不到Firebase功能的打字稿声明

时间:2018-09-08 16:31:31

标签: typescript firebase preact

我有一个使用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中,但是我不确定如何让编译器看到它。

1 个答案:

答案 0 :(得分:0)

我想我已经解决了。我不应该导入CollectionReference,DocumentSnapshot和Firestore。相反,我需要使用类型的完全限定名称,例如firebase.firestore.Firestore。我还可以使用类型别名来使其更短:

type Firestore = firebase.firestore.Firestore
type CollectionReference = firebase.firestore.CollectionReference;
type QuerySnapshot = firebase.firestore.QuerySnapshot;