键入'可观察<用户 |空 | undefined>' 不可分配给类型 'Observable<User>'
Posted
技术标签:
【中文标题】键入\'可观察<用户 |空 | undefined>\' 不可分配给类型 \'Observable<User>\'【英文标题】: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/
【问题讨论】:
现在正在做同样的课程。感谢您在这里提问! 【参考方案1】:在您的方法中,您可能会返回 null,因此您也可以将 user$ Observable 声明为可能为 null 或未定义
user$: Observable<User | null | undefined>;
【讨论】:
非常感谢:) 这就是我最终要寻找的东西。打字稿让我想扔掉我的电脑。 除了告诉 TypeScript 闭嘴之外,这是否还有其他(可能是负面的)后果?以上是关于键入'可观察<用户 |空 | undefined>' 不可分配给类型 'Observable<User>'的主要内容,如果未能解决你的问题,请参考以下文章
打字稿:键入'字符串| undefined' 不能分配给 type 'string'