我已经阅读了关于这个问题的几个问题和答案,但无法解决它。
我正在使用Ionic2,并且我有一个从Firebase Database 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,
});
});
});
}
}
3条答案
按热度按时间wecizke31#
DataSnapshot
中的forEach
方法具有以下签名:因为
action
可以返回true
,使枚举短路,提前返回,如果返回的值为false,则枚举正常继续(文档中有提及)。为了满足TypeScript编译器的要求,最简单的解决方案是返回
false
(以继续枚举子快照):d5vmydt92#
对于Typescript版本,我想出了这个解决方案:
zpgglvta3#
在我的例子中,我必须
return true
来取消枚举:文件:[1][2]