字符串类型的参数 | null 不可分配给字符串错误类型的参数

时间:2021-05-14 06:34:39

标签: typescript angular11 angular-local-storage

当我尝试获取本地存储记录时出现以下错误。

"Argument of type 'string | null' is not assignable to parameter of type 'string'.\n  Type 'null' is not assignable to type 'string'.",

这是代码

this.service.getAllPets(this.CatDog).subscribe(
  data => {
    this.pets = data;
    console.log(data);
    // tslint:disable-next-line:no-bitwise
    const newPet = JSON.parse(localStorage.getItem('newPet'));
    if (newPet){
      this.pets = [newPet, ...this.pets];
    }
    console.log(this.route.snapshot.url.toString());
  }, error => {
    console.log('httperror:');
    console.log(error);
  }
);

1 个答案:

答案 0 :(得分:3)

JSON.parse 接受字符串类型的 arg

localStorage.getItem 返回字符串或 null 类型的参数(如果未找到)

因此您可以在解析之前添加一个快速的默认值集。 像这样:

const newPet = JSON.parse(localStorage.getItem('newPet') || "{}");

另一种选择是从本地存储中获取结果,检查它是否为空,然后解析它。