angular - Tipul 'Observable<User | null | undefined>' nu poate fi atribuit tipului 'Observable<User>'


Încerc să creez un Google SignIn cu Firestorm. Dar prea multe lucruri s-au schimbat de la crearea ghidului și nu pot găsi un răspuns :(

Deci problema este:

export class AuthService {
  
  user$: Observable<User>; //This Observable can be NULL or undefined.

  constructor(
        private afAuth: AngularFireAuth,
        private afs: AngularFirestore,
        private router: Router
  ) {
    

    this.user$ = this.afAuth.authState.pipe(   //this one is not assignable to null or undefined
      switchMap(user => {
          // Logged in
        if (user) {
          return this.afs.doc<User>(`users/${user.uid}`).valueChanges();
        } else {
          // Logged out
          return of(null);
        }
      })
    )
    
   }
}

Primesc întotdeauna această eroare:

Tipul 'Observable' nu poate fi atribuit tipului 'Observable'. Tipul 'User | null | undefined' nu poate fi atribuit tipului 'User'. Tipul 'undefined' nu poate fi atribuit tipului 'User'.ts(2322)

Dar nu pot să îmi dau seama ce să fac.

Aceasta este documentația originală:

https://fireship.io/lessons/angularfire-google-oauth/

Răspuns #1

În metoda ta poți eventual să returnezi null, așa că trebuie să declari Observable-ul user$ca fiind posibil null sau undefined de asemenea

  user$: Observable<User | null | undefined>;