【问题标题】:How to fix this error Cannot invoke an expression whose type lacks a call signature如何修复此错误无法调用类型缺少调用签名的表达式
【发布时间】:2019-03-13 09:13:45
【问题描述】:

错误:

[ts] Cannot invoke an expression whose type lacks a call signature. Type 'DatabaseSnapshot<any>' has no compatible call signatures.
(parameter) item: AngularFireAction<DatabaseSnapshot<any>>

文件消费服务

**Error is at ...Item.payLoad().val()**
 constructor(private service: EmployeeService) { }
  ngOnInit() {
    this.service.getEmployees().subscribe(list => {
      let array = list.map(item => {
        return { $key: item.key, **...item.payload().val()** }
      })
    });
  }
**Method-II**
    getEmployees() {
        this.employeeList = this.db.list('employees');
        return this.employeeList.snapshotChanges();
      }

【问题讨论】:

  • 请张贴代码,而不是图片。像这样帮助你真的很难。
  • 我已经更改并在此处粘贴实际代码

标签: javascript angularjs typescript firebase-realtime-database


【解决方案1】:

item.payload 是一个属性而不是一个函数,你应该看看你是否在 IDE 中跳转到 its definition

export interface Action<T> {
  type: ListenEvent;
  payload: T;  // <---
};

export interface AngularFireAction<T> extends Action<T> {
  prevKey: string | null | undefined;
  key: string | null;
}

所以你应该使用item.payload而不调用它:删除item.payload之后的括号。

【讨论】:

  • 感谢您的帮助。我已经修复了错误,现在它正在工作
猜你喜欢
  • 2016-03-30
  • 2017-02-03
  • 2019-09-10
  • 2019-12-15
  • 2018-12-25
  • 2023-03-20
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多