Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao passar o token para decodificar com jwt_decode

Olá, estou com um problema na hora de passar o token para ser decodificado pelo jwt_decoder, dá o seguinte erro:

Error: src/app/core/user/user.service.ts:25:29 - error TS2345: Argument of type 'string | null' is not assignable to parameter of type 'string'.
  Type 'null' is not assignable to type 'string'.

Meu user.service.ts

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

import { TokenService } from './../token/token.service';
import jwt_decode from 'jwt-decode';
import { User } from './user';

/** Serviço para armazenar o token com auxílio do TokenService e retornar o usuário logado*/
@Injectable({ providedIn: 'root' })
export class UserService {

  private userSubject = new Subject<User>();

  constructor(private tokenService: TokenService) { }

  setToken(token: string) {
    this.tokenService.setToken(token);
    this.decodeAndNotify();
  }

  getToken() { }

  private decodeAndNotify() {
    const token = this.tokenService.getToken();
    const user = jwt_decode(token) as User;
  }


}

Isso acontece porque o token está vindo do tipo string | null que é retornado lá no método getItem() do localStorage em token.service.ts

getToken() {
    return window.localStorage.getItem(KEY);
  }

Já pesquisei e tentei várias coisas aqui, mas nada resolve. Estou travado nisso, sem poder seguir o curso. Alguém pode me ajudar?

1 resposta
solução!

Bom pessoal, encontrei a solução!

Minha idéia era um cast e tentei em vários lugares, inclusive tentei tipar o método getToken() como string, mas não resolveu, até que fiz o cast no retorno de método getToken() em token.service.ts

 getToken(){
    return window.localStorage.getItem(KEY) as string;
  }

Dessa forma, resolveu meu problema. Abraços