ошибка TS2339: свойство 'include' не существует для типа '{}' - PullRequest
0 голосов
/ 07 июня 2018

У меня следующая ошибка:

ошибка TS2339: свойство 'include' не существует для типа '{}'.

при попытке проверитьесли имя пользователя взято или нет.(Это прекрасно работает, когда я комментирую эту ошибку, затем начинаю с 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 [], и проблема была в tsconfig с es2017, но у меня уже есть:

"lib": [
      "es2017",
      "dom"
    ]

Где я не прав?

1 Ответ

0 голосов
/ 07 июня 2018

Во-первых, в этом случае использование new Promise не обязательно, вы можете просто вернуть обещание.Во-вторых, вам нужно правильно ввести users как string[], что поможет с выводом типа возврата.

isUsernameAvailable() {
    return firebase.database().ref('users').orderByKey().once('value').then(snapshot => {
        const users:string[]  = [];
        snapshot.forEach(childSnapshot => {
            if (childSnapshot.val().username) {
                users.push(childSnapshot.val().username);
            }
        })
        return users;
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...