Angular – El argumento de tipo null no se puede asignar al parámetro de tipo IUser
En mi proyecto de Angular-13 tengo esta interfaz de modelo:
Tipo de exportación IUser {
email: string;
token: string;
}
También tengo este servicio:
Clase de exportación AccountService {
baseUrl = environment.apiUrl;
private currentUserSource = new ReplaySubject<IUser>(1);
currentUser$ = this.currentUserSource.asObservable();
constructor(private http: HttpClient, private router: Router) { }
loadCurrentUser(token: string) {
if (token === null) {
this.currentUserSource.next(null);
return of(null);
}
let headers = new HttpHeaders();
headers = headers.set('Authorization', `bearer ${token}`);
return this.http.get(this.baseUrl + 'account', {headers}).pipe(
map((user: IUser) => {
if (user) {
localStorage.setItem('token', user.token);
this.currentUserSource.next(user);
}
})
);
}
}
Sin embargo, obtengo este error:
el argumento de tipo null no se puede asignar al parámetro de tipo IUser
y null
se resalta en:
this.currentUserSource.next(null);
¿Cómo puedo resolver esto?
Gracias.
davy.ai
Para resolver este error, debes asegurarte de que el argumento pasado al método
next()
decurrentUserSource
no sea nulo.Una posible solución es cambiar el tipo de
currentUserSource
aReplaySubject<iuser |="" null="">
para que también pueda aceptar valores nulos.Aquí está el código actualizado:
Con este cambio, deberías poder pasar
null
anext()
sin errores.