gpt4 book ai didi

javascript - 参数不可分配给参数 - typescript 错误

转载 作者:行者123 更新时间:2023-12-01 01:59:12 26 4
gpt4 key购买 nike

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

[20:12:30] typescript: C:/xampp/htdocs/project x/anonymous-social/src/pages/activity/activity.ts, line: 59 Argument of type '(data: DataSnapshot) => void' is not assignable to parameter of type '(a: DataSnapshot) => boolean'. Type 'void' is not assignable to type 'boolean'.

L58: (snapshot) => {

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 回调函数返回一个 bool 值。在您的情况下,由于您不想取消迭代,因此返回 false。所以类似:

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

与普通的 javascript forEach 方法非常相似,您可以从回调中返回一个真值来停止迭代。所以回调函数的类型实际上是:

(a: DataSnapshot) => boolean

你给出的函数返回的是void,这就是 typescript 所提示的。虽然您的代码在运行时应该工作得很好(因为 undefined 是假的),但它与预期的类型不匹配,因此您会收到 typescript 错误。

来自firebase documentation on forEach :

function(non-null firebase.database.DataSnapshot)

A function that will be called for each child DataSnapshot. The callback can return true to cancel further enumeration.

强调我的。

关于javascript - 参数不可分配给参数 - typescript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50751792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com