Angular - null 类型的参数不能分配给 IUser 类型的参数

Angular - argument of type null is not assignable to parameter of type IUser

在我的 Angular-13 项目中,我有这个模型界面:

export interface IUser {
   email: string;
   token: string;
}

还有这项服务:

export class 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);
        }
      })
    );
  }
}

但是,我得到了这个错误:

argument of type null is not assignable to parameter of type IUser

null 突出显示在:

this.currentUserSource.next(null);

我如何获得这个决心?

谢谢

ReplaySubject.next() 预期接收具有 T 值的参数。

next(value: T): void

Parameters

value Type: T.

Returns 无效

哪个 TIUser 基于以下陈述:

private currentUserSource = new ReplaySubject<IUser>(1);

解决方案

您可以通过将 currentUserSource 声明为 ReplaySubject<IUser | null> 类型来解决它。

private currentUserSource = new ReplaySubject<IUser | null>(1);

Sample Demo on StackBlitz