1
resposta

[Bug] Erro na condicional.

Estou passando o código abaixo:

export class AutenticacaoGuard implements CanLoad {

  constructor(private usuarioService: UsuarioService, private router: Router) { }

  canLoad(
    route: Route,
    segments: UrlSegment[]
    ):
    | Observable<boolean | UrlTree>
    | Promise<boolean | UrlTree>
    | boolean
    | UrlTree {
    if (!this.usuarioService.estaLogado()) {
      this.router.navigate([' ']);
      return false;
    }

    return true;
  }
}

está me retornando: Error: src/app/autenticacao/autenticacao.guard.ts:21:10 - error TS1345: An expression of type 'void' cannot be tested for truthiness.

1 resposta

Oi Luciano, tudo bem?

Pelo código que mandou não encontrei nenhum erro. Nesses casos é bom baixar o código da aula e verificar todos os arquivos que tiveram modificações. Vou deixar aqui o link para download.

Em todo caso, irei deixar aqui o código completo desse arquivo que você mencionou:

import { Injectable } from '@angular/core';
import {
  CanLoad,
  Route,
  UrlSegment,
  ActivatedRouteSnapshot,
  RouterStateSnapshot,
  UrlTree,
  Router,
} from '@angular/router';
import { Observable } from 'rxjs';
import { UsuarioService } from './usuario/usuario.service';

@Injectable({
  providedIn: 'root',
})
export class AutenticacaoGuard implements CanLoad {
  constructor(private usuarioService: UsuarioService, private router: Router) {}

  canLoad(
    route: Route,
    segments: UrlSegment[]
  ):
    | Observable<boolean | UrlTree>
    | Promise<boolean | UrlTree>
    | boolean
    | UrlTree {
    if (!this.usuarioService.estaLogado()) {
      this.router.navigate(['']);
      return false;
    }

    return true;
  }
}

Um abraço e bons estudos.