typescript 将本地存储Map到接口

bhmjp9jg  于 2023-03-04  发布在  TypeScript
关注(0)|答案(1)|浏览(152)

我正在从本地存储中检索对象:

retrieveToken(): JwtToken {
   return JSON.parse(localStorage.getItem(_key));
 }

我需要将存储在本地存储中的数据Map到我的界面

export interface JwtToken {
  access_token: string;
  expires_in: number;
  token_type: string;
  refresh_token: string;
}

我试过了

return JSON.parse(localStorage.getItem(_key) as JwtToken);

return JSON.parse<JwtToken>(localStorage.getItem(_key));

任何帮助都将不胜感激

ohfgkhjo

ohfgkhjo1#

您正在对从存储中检索到的字符串值执行强制转换,而不是对JSON.parse()的结果执行强制转换。
它应该是:

return JSON.parse(localStorage.getItem(_key)) as JwtToken;

为了消除localStorage.getItem()可能返回null这一事实所导致的错误,可以添加一个非空Assert,以使编译器确信_key的值肯定会出现在localStorage中:

return JSON.parse(localStorage.getItem(_key)!) as JwtToken;

或者,更好的方法是执行显式空值检查:

const jwtTokenString = localStorage.getItem(_key);

if (jwtTokenString) {
    return JSON.parse(jwtTokenString) as JwtToken;
}

相关问题