javascript - Typescript 错误类型 'null' 不可分配给类型

标签 javascript angular typescript null local-storage

在我的项目中,我使用 Angular LocalStorage存储类型为文件名的记录的值。我在 back 中遇到错误方法
错误

Type 'string | null' is not assignable to type 'FileName | undefined'.
  Type 'null' is not assignable to type 'FileName | undefined'.
我需要帮助来解决这个错误,下面是我的代码
代码

export interface FileName {
    fname: number;
    sname: number;
    Tange: number;
    quick: string;
    Mark: string;
    mine: number;
}

currentName: FileName | undefined = undefined;
previousName: FileName | undefined = undefined;

data(rec: FileName, Mark: HTMLTableDataCellElement) {
  const { fname, sname, Tange, record_id, mine } = rec;
  const quick = Mark.innerText;
  this.name.replaceAndNew({sname, Tange, record_id, quick, mine, fname}).subscribe(data => {
    this.process(data);
  })
   localStorage.setItem('FileName', JSON.stringify(rec));
}

back(){
  localStorage.getItem('FileName');
  this.currentName =  localStorage.getItem('FileName'); -----------------> Error

}

最佳答案

fortunee 是正确的,但是由于 localStorage 中的所有内容都存储为字符串,Typescript 无法保证该对象仍然是同一个对象。在这种情况下,您需要通过强制转换告诉 Typescript 解析的对象将是什么类型。

this.currentName =  JSON.parse(localStorage.getItem('FileName') || '{}') as FileName;
之后,您可能需要回避类型以确保 this.currentName不是一个空对象(如果用户清除了他们的 localStorage,这可能会发生)。
例子:
if (this.currentName.fname == null) {
  // Give the user an error message or something...
  this.currentName = undefined;
}

关于javascript - Typescript 错误类型 'null' 不可分配给类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66713585/

相关文章:

angular - Ionic 4 弹出窗口出现在屏幕外

typescript - Angular2 ag-grid 数据源不工作

javascript - 如何以编程方式转义引号?

javascript - 如何在带有 javascript 区域选择的表中选择一系列 td?

javascript - React 无状态功能组件和组件生命周期

Angular 2 HTTP 请求 : TypeError: backend. createConnection 不是函数

javascript - 使用 JavaScript 的 Selenium Webdriver,如何使用 chrome.exe 的特定路径启动 Chrome?

javascript - 提交表单 Angular 后如何显示用户名

TypeScript:使用 Redux Toolkit 的 'unwrapResult' 时正确输入 AsyncThunk 的返回类型

javascript - 在 <head> 上时脚本不起作用