【发布时间】:2018-11-17 14:17:55
【问题描述】:
我遇到以下错误:
错误 TS2339:类型“{}”上不存在属性“includes”。
当尝试检查用户名是否被使用时。 (当我评论这个错误时,它非常有效,然后从 ng serve 开始,然后取消注释它,但我无法启动我的服务错误,这就是我使用这个技巧的原因)
服务:
isUsernameAvailable(){
const users = [];
return new Promise(function(resolve, reject){
firebase.database().ref('users').orderByKey().once('value').then(snapshot => {
snapshot.forEach(childSnapshot => {
if(childSnapshot.val().username){
users.push(childSnapshot.val().username);
}
})
resolve(users);
})
});
}
组件:
async checkUsername(){
const username=this.signupForm.get('username').value;
const usernames =await this.authService.isUsernameAvailable();
if(usernames.includes(username)){
this.usernameAvailable=false;
}
else {
this.usernameAvailable=true;
}
}
我看到一些人在使用 String[] 类型时遇到了类似的错误,问题出在 es2017 的 tsconfig 中,但我已经有了:
"lib": [
"es2017",
"dom"
]
我哪里错了?
【问题讨论】:
-
不要使用
new Promise。 stackoverflow.com/q/23803743/34397 -
您应该注释您的函数以声明它们实际返回的内容。
-
你应该使用
map()&filter()。 -
好的,谢谢@SLaks 我是 ATM 的初学者,我会尝试你的建议。我应该删除我的主题还是我的问题对某人有用?
标签: node.js angular typescript firebase promise