gpt4 book ai didi

ionic-framework - '(snap: DataSnapshot) => void' 类型的参数不能分配给 '(a: DataSnapshot) => boolean' 类型的参数

转载 作者:行者123 更新时间:2023-12-04 01:24:44 25 4
gpt4 key购买 nike

我已经阅读了有关此问题的几个问题和答案,但无法解决。

我正在使用 Ionic2,并且有一种方法可以从 Firebase 数据库 v3 中检索数据。
我不明白为什么我在执行 ionic serve 时会在控制台中出现以下错误:

Error TS2345: Argument of type '(snap: DataSnapshot) => void' is not assignable to parameter of type '(a: DataSnapshot) => boolean'.
Type 'void' is not assignable to type 'boolean'.

这是方法:
constructor(private http: Http) {

firebase.database().ref('users').orderByChild("id").on("value", function(snapshot){
let items = [];
snapshot.forEach(snap => {
items.push({
uid: snap.val().uid,
username: snap.val().username,
});
});
});
}
}

最佳答案

forEach DataSnapshot 中的方法有这个签名:

forEach(action: (a: firebase.database.DataSnapshot) => boolean): boolean;

action可以退货 true短路枚举并尽早返回。如果返回假值,则枚举继续正常进行。 (这是在 documentation 中提到的。)

为了安抚 TypeScript 编译器,最简单的解决方案是返回 false (继续枚举子快照):
database()
.ref("users")
.orderByChild("id")
.on("value", (snapshot) => {
let items = [];
snapshot.forEach((snap) => {
items.push({
uid: snap.val().uid,
username: snap.val().username
});
return false;
});
});

关于ionic-framework - '(snap: DataSnapshot) => void' 类型的参数不能分配给 '(a: DataSnapshot) => boolean' 类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39845758/

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