En este fragmento tengo el siguiente error:
Type 'string | null' is not assignable to type 'string'. Type 'null' is not assignable to type 'string'. TS2322 export async function GetCertainCoinByType(coinId: string) { const response = await axios.get(URLofCertainCoins + `certain/${coinId}`, { headers : { token : localStorage.getItem('token'), } }); return response; }Esto se debe a que el tipo de valor devuelto del almacenamiento local es string | null , y no solo una string . Para evitar esta excepción, primero puede obtener el elemento del almacenamiento local y luego usarlo como:
export async function GetCertainCoinByType(coinId: string) { let tokenFromStorage = localStorage.getItem('token') if (!tokenFromStorage ) { throw new Error("no token supplied"); } const response = await axios.get(URLofCertainCoins + `certain/${coinId}`, { headers : { token : tokenFromStorage } }); return response; }Primero, verifique si el token es nulo y, si lo es, salga de la función.
Ahora, la response es una Promesa de todos modos, ya que la devuelve una función async . No necesita await a Axios, luego volver a convertirlo en una Promesa después. Puede return axios.get(...) y dado que esto elimina el único await , resulta que ni siquiera necesita la sintaxis async/await aquí.
export function GetCertainCoinByType(coinId: string): Promise<any> { const token:string|null = localStorage.getItem('token'); if(!token){ console.log("No token!"); return ; } return axios.get(URLofCertainCoins + `certain/${coinId}`, { headers : { token } }); }