如何在打字稿中正确导入Firestore的HttpsCallable类型

时间:2019-06-29 09:16:05

标签: angular typescript firebase google-cloud-firestore

使用Angular 2.0和Firestore,我创建了一个Cloud Function,我想在我的代码中调用它。 在使用TypeScript时,我想提供引用此Cloud Function的变量的类型(即类型HttpsCallable)。

WebStorm在提供类型时建议以下导入:

import HttpsCallable = firebase.functions.HttpsCallable;

但是,运行代码时会出现以下错误

ERROR Error: Uncaught (in promise): TypeError: firebase_app__WEBPACK_IMPORTED_MODULE_3__.functions is not a function
TypeError: firebase_app__WEBPACK_IMPORTED_MODULE_3__.functions is not a function

代码如下:

import {Injectable} from '@angular/core';
import {AngularFirestore, CollectionReference} from '@angular/fire/firestore';
import * as firebase from 'firebase/app';
import 'firebase/firestore';
import {collectionData} from 'rxfire/firestore';
import {tap} from 'rxjs/operators';
import HttpsCallable = firebase.functions.HttpsCallable;


@Injectable({
  providedIn: 'root',
})
export class FirestoreService {
  private app: firebase.app.App;

  // My Cloud Function
  registerUserFunction: HttpsCallable;

  constructor(private db: AngularFirestore) {
    // Cloud Function
    this.registerUserFunction = firebase.functions().httpsCallable('dbUsersRegister');
  }

我的问题是:在TypeScript中导入Firestore类型HttpsCallable的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我没有使用angular,但是在webpack项目中使用TypeScript,导入功能的工作就像导入Firestore:

import * as firebase from 'firebase/app'
import 'firebase/functions'
const callable: firebase.functions.HttpsCallable =
    firebase.functions().httpsCallable(...)