我有一个看起来像这样的数组:
this.data = [
{ cols: 1, rows: 1, y: 0, x: 4 },
{ cols: 1, rows: 1, y: 2, x: 5 }
];
我使用以下方法将其保存到localstorage:
localStorage.setItem('my_data', JSON.stringify(this.data));
然后我使用以下方法检索它:
this.data = JSON.parse( localStorage.getItem('my_data'));
这个问题是,当我尝试获取数据时,我收到此错误:
类型NULL不能分配给Type String。
我该如何解决这个问题?
答案 0 :(得分:2)
要删除类型错误(仅在严格的东西启用时显示),您可以确保处理空值:
// Warning... don't use this code until you read the next section!
data = JSON.parse(localStorage.getItem('my_data') || '');
这是因为localStorage.getItem
可以返回string | null
,但JSON.parse
只接受string
(即非空)。
如果您还希望您的代码能够得到合理的工作,我建议的解决方案将更进一步,并提供合理的默认JSON字符串:
data = JSON.parse(localStorage.getItem('my_data') || '[]');
此问题中的错误只有在启用strictNullChecks
时才会显示,因为这会捕获分配给null
的潜在string
。
这种情况下的确切错误是:
Argument of type 'string | null' is not assignable to parameter of type 'string'.
Type 'null' is not assignable to type 'string'.