Observable<unknown> 不可分配给 Observable<{}>。它缺少以下属性,如 name、email、isAdmin

Sri*_*aju 1 javascript observable angular

我用通用对象返回 observable,如果用户存在返回用户对象,否则返回 null。但在这个过程中,我收到如下错误:

observable<-unknown-> 未分配给 observable<{}>。``` 并且它缺少以下属性。

auth.service.ts

import { AppUser } from './models/app-users';
import { UserService } from './user.service';
import { of } from 'rxjs';

export class AuthService {

constructor(private userObj:UserService) 

 get appUser$(): Observable<AppUser | null> {
    return this.user$.pipe(
      switchMap(user => user
        ? this.userObj.get<AppUser>(user.uid).valueChanges()
        : of(null)
      )
    );
  }




Run Code Online (Sandbox Code Playgroud)

用户服务.ts:

 get(uid:string):AngularFireObject<AppUser>{
    return this.db.object('/users/' + uid);
  }
Run Code Online (Sandbox Code Playgroud)

应用程序用户.ts:

export interface AppUser {
    name: string;
    email: string;
    isAdmin: boolean;
}
Run Code Online (Sandbox Code Playgroud)

如果用户不存在,如何返回null?

Pie*_*Duc 5

你应该这样做,通过改变返回类型。我猜您正在使用strict: truetsconfig.json 中的选项:

get appUser$(): Observable<AppUser | null> {
  return this.user$.pipe(
    switchMap(user => user
      ? this.userObj.get(user.uid).valueChanges()
      : of(null)
    )
  );
}
Run Code Online (Sandbox Code Playgroud)