关闭Firebase参考的操作类型会给出错误

时间:2018-01-29 18:42:29

标签: typescript firebase firebase-realtime-database firebase-admin

我有一个简单的类,它有一个方法set,它抽象了Firebase的 set 功能。 set方法是:

/** set a "value" in the database at a given path */
public async set<T = any>(path: string, value: T): Promise<void> {
  return this.ref(path)
    .set(value)
    .catch((e: any) =>
      this.handleError(e, "set", `setting value @ "${path}"`)
    );
}

如果我使用标准客户端打字库,从打字的角度来看这很好:

import * as client from "@firebase/database";
import * as admin from "firebase-admin";
export type Reference = client.Reference;

/** Get a DB reference for a given path in Firebase */
public ref(path: string): Reference {
  return this._mocking
    ? this.mock.ref(path)
    : RealTimeDB.connection.ref(path);
}

如果我使用Admin API的参考输入:

,也可以
export type Reference = client.Reference;

但是,由于此类应由使用客户端和服务器,我想将Reference定义为:

export type Reference = admin.database.Reference | client.Reference;

但是当我这样做时,VisualCode仍然正确地自动完成我的参考:

enter image description here

但同时我得到一个错误指示器,无论我从引用中选择哪种方法:

  

[ts]无法调用类型缺少调用签名的表达式。输入&#39;((值:any,onComplete?:( a:错误)=&gt; any)=&gt;承诺)| ((newVal:any,onComplete?:( a:......&#39;没有兼容的呼叫签名。

造成这种情况的原因是什么?

0 个答案:

没有答案