繁体   English   中英

参数无法分配给参数-打字稿错误

[英]Argument is not assignable to parameter - typescript error

我正在构建的打字稿应用程序出现错误。 我正在使用Ionic / Angular,并且遇到的错误之一是:

[20:12:30]打字稿:C:/ xampp / htdocs / project x / anonymous-social / src / pages / activity / activity.ts,第59行:'(data:DataSnapshot)=> void'类型的参数是不能分配给类型'(a:DataSnapshot)=>布尔值'的参数。 类型“无效”不能分配给类型“布尔”。

L58 :(快照)=> {

L59:snapshot.forEach(data => {

L60:data.ref.update({'read':“ true”})

我不太确定为什么要说实话。 也许有人可以解释。.它引用的代码是:

if(checkStatus) {
  this.database.database.ref('/users/'+this.userData.uid+'/replied_to')
  .orderByChild('read')
  .equalTo("false").once("value",
  (snapshot) => {
    snapshot.forEach(data => {
        data.ref.update({'read': "true"})
    });
  });
}

这在语法上是正确的,不是吗? 我究竟做错了什么? 任何帮助将是巨大的! 谢谢

您只需要从forEach回调函数返回一个布尔值。 在您的情况下,由于您不想取消迭代,请返回false 所以像这样:

snapshot.forEach(data => {
    data.ref.update({'read': "true"})
    return false // Add this
});

就像普通的javascript forEach方法一样,您可以从回调中返回真实值以停止迭代。 因此,回调函数的类型实际上是:

(a: DataSnapshot) => boolean

您正在提供一个返回void的函数,而这正是打字稿所抱怨的。 尽管您的代码在运行时应该可以正常工作(因为undefined容易出错),但它与预期的类型不匹配,因此您会遇到打字稿错误。

forEachfirebase文档中

函数(非null firebase.database.DataSnapshot)

将为每个子DataSnapshot调用的函数。 回调可以返回true以取消进一步的枚举。

强调我的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM