Тип «Клиент | неопределенный» не может быть присвоен типу «Клиент» с использованием angular12 и firebase

# #angular #firebase

Вопрос:

я создал приложение для управления клиентами, которому разрешил отображать клиентов, и у меня есть для каждого клиента кнопка сведений для отображения сведений о клиенте, поэтому я хочу получить сведения о клиенте, но это выдает ошибку: Type 'Client | undefined 'is not assignable to type' Client ' . визуальный код подчеркивает это на this.client = client;

клиент.услуги.ts

 getClient(id:string) {
     return this.clientsCollection.doc(id).valueChanges();
   }
 

модельный Клиент

 export interface Client{
    id? : string,
    firstname? : string,
    lastname? : string,
    email? : string,
    phone? : number,
    balance : number
}
 

подробности-client.component.ts

 ngOnInit(): void {
     this.id = this.router.snapshot.params['id'];
     this.clientService.getClient(this.id).subscribe(client => {
       this.client = client;
       console.log(this.client);
     });
  } 
 

Комментарии:

1. getClient возможно, возвращает undefined значение, таким образом, в обратном subscribe client вызове также может быть undefined , но this.client не допускает значения undefined . Проверьте значение client задано, прежде чем назначать его this.client

2. @derpirscher thx для вас,как я могу подтвердить, что getClient возвращает данные клиента

3. это.клиент = клиент!; должно сработать. этот синтаксис говорит ts, что здесь у нас всегда будет значение

4. @Andrei о своей работе

5. this.client = client! исправлена проблема с компиляцией. И если гарантируется, что client это всегда будет установлено, можно использовать ненулевое утверждение ! . Но если есть возможность, это getClient() действительно возвращает a null или undefined вы должны проверить if (client) this.client = client и, возможно, вызвать ошибку в противном случае …