【问题标题】:Angular - error TS2345: Argument of type 'string | null' is not assignable to parameter of type 'string'Angular - 错误 TS2345:'string | 类型的参数null' 不能分配给“字符串”类型的参数
【发布时间】:2021-08-18 04:21:47
【问题描述】:

我的身份验证服务中有这个:

constructor(private http: HttpClient, private router: Router,) {
   //append headers
   // set token if saved in local storage
   var currentUser = JSON.parse(localStorage.getItem('user'));
   this.token = currentUser && currentUser.token;
   if(this.token){
      this.user_id = currentUser.user.user_id;
   }
}

以下划线:

localStorage.getItem('user')

但是得到了这个错误:

错误 TS2345:'string | 类型的参数null' 不能分配给“字符串”类型的参数

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 您需要处理本地存储中可能没有值的事实,即返回null
  • @GaëlJ - 我该如何处理?
  • 查看下方@mbojko 的回复

标签: angular


【解决方案1】:

显然,您需要检查 localStorage 条目是否未设置密钥 'user'。某样东西

const userJSON = localStorage.getItem('user');

if (userJSON) {
   // token setting logic goes here
} else {
   // plan B
}

【讨论】:

  • 我应该在 // 令牌设置逻辑中添加什么内容在 // 计划 B 中也有广告
  • if中,如果在本地存储中找到该值(基本上是您的原始代码),您想做什么,在else中,这取决于您,您想做什么如果在本地存储中找不到该值..
猜你喜欢
  • 2018-04-05
  • 1970-01-01
  • 2021-09-30
  • 2018-07-28
  • 1970-01-01
  • 2021-09-22
  • 2021-09-06
  • 1970-01-01
  • 2021-11-02
相关资源
最近更新 更多