Observable <unknown>нельзя назначить Observable <{}>. В нем отсутствуют следующие свойства, такие как name, email, isAdmin - PullRequest
1 голос
/ 08 ноября 2019

Я возвращаю наблюдаемый с универсальным объектом и, если пользователь существует, возвращает пользовательский объект, в противном случае возвращает ноль. Но в этом процессе я получаю сообщение об ошибке:

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




user.service.ts:

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

app-users.ts :

export interface AppUser {
    name: string;
    email: string;
    isAdmin: boolean;
}

Как вернуть ноль, если пользователь не существует?

1 Ответ

4 голосов
/ 08 ноября 2019

Вы должны сделать это так, изменив тип возвращаемого значения. Я полагаю, вы используете параметр strict: true в вашем файле tsconfig.json:

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