【问题标题】:Type 'Observable<User | null | undefined>' is not assignable to type 'Observable<User>'键入'可观察<用户 |空 | undefined>' 不可分配给类型 'Observable<User>'
【发布时间】:2021-04-18 22:06:07
【问题描述】:

我正在尝试使用 Firestorm 创建 Google 登录。但是自从创建指南以来,很多事情都发生了,我找不到答案:(

所以问题是:

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

我总是收到这个错误:

键入'可观察的' 不可分配给类型 “可观察”。输入“用户 |空 | undefined' 不可赋值 键入“用户”。 类型“未定义”不可分配给类型“用户”.ts(2322)

但我不知道该怎么做。

这是原始文档:

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

【问题讨论】:

  • 现在正在做同样的课程。感谢您在这里提问!

标签: angular typescript firebase observable


【解决方案1】:

在您的方法中,您可能会返回 null,因此您也可以将 user$ Observable 声明为可能为 null 或未定义

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

【讨论】:

  • 非常感谢:)
  • 这就是我最终要寻找的东西。打字稿让我想扔掉我的电脑。
  • 除了告诉 TypeScript 闭嘴之外,这是否还有其他(可能是负面的)后果?
猜你喜欢
  • 2019-01-10
  • 2021-07-04
  • 2021-08-17
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2021-08-16
  • 2019-12-25
相关资源
最近更新 更多