参数不能分配给参数 - typescript错误

时间:2018-06-08 00:24:35

标签: javascript angular typescript

我在构建我的打字稿应用程序时遇到错误。我使用Ionic / Angular,其中一个错误是:

  

[20:12:30] typescript:C:/ xampp / htdocs / project x / anonymous-social / src / pages / activity / activity.ts,line:59               类型'(数据:DataSnapshot)=>的参数空隙'不能分配给'(a:DataSnapshot)=>类型的参数。               布尔&#39 ;.键入' void'不能分配给'布尔'。

     

L58 :(快照)=> {

     

L59:snapshot.forEach(data => {

     

L60:data.ref.update({'读':" 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"})
    });
  });
}

这在语法上是否正确不是吗?我究竟做错了什么?任何帮助都会很棒!谢谢

1 个答案:

答案 0 :(得分:2)

您只需要从function noStartingWhiteSpace(e){ var preventWhiteSpaceInput= e.target.value; if(/^\s/.test(preventWhiteSpaceInput)) e.target.value = ''; } 回调函数返回一个布尔值。在您的情况下,由于您不想取消迭代,请返回forEach。如下所示:

false

与普通的javascript snapshot.forEach(data => { data.ref.update({'read': "true"}) return false // Add this }); 方法非常相似,您可以从回调中返回一个truthy值来停止迭代。所以回调函数的类型实际上是:

forEach

您正在提供一个返回(a: DataSnapshot) => boolean 的函数,这就是打字稿所抱怨的内容。虽然你的代码在运行时应该可以正常工作(因为void是假的),但它并不匹配预期的类型,因此你会得到一个打字稿错误。

来自{{3}}:

  

function(非null firebase.database.DataSnapshot)

     

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

强调我的。