首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角- onfig.service.ts:11:1 -错误TS2532:对象可能是“未定义的”

角- onfig.service.ts:11:1 -错误TS2532:对象可能是“未定义的”
EN

Stack Overflow用户
提问于 2021-05-25 10:54:55
回答 2查看 220关注 0票数 0

在我的角-11 config.service中,我使用:

代码语言:javascript
复制
var currentUser = JSON.parse(localStorage.getItem('user'));

我发现了一个错误:

error TS2345:类型为'string‘的参数不能分配给'string’类型的参数。输入'null‘不能分配到输入'string’。10 var currentUser = JSON.parse(localStorage.getItem('user'));

然后当我把它改为:

代码语言:javascript
复制
this.currentUser = JSON.parse(localStorage.getItem('currentUser') || '{}');

此错误变成:

src/app/core/services/config.service.ts:11:1 -错误TS2532: Object可能是“未定义”。11 JSON.parse(localStorage.getItem('currentUser') this.currentUser ={});

然后"this“加下划线。

对象可能是“未定义”

我怎样才能解决这个问题?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-25 11:02:46

这是正确的做法:

代码语言:javascript
复制
this.currentUser = JSON.parse(localStorage.getItem('currentUser')!) || {};

这是因为:

尽管从TS的角度来看,null

  • Thus

  • 是无效的,但是仍然有效,并且会导致JSON.parse(localStorage.getItem('currentUser')!)在本地存储中返回对象,或者在|| {}中返回,您可以说,它肯定会返回。
票数 0
EN

Stack Overflow用户

发布于 2021-05-25 11:09:27

我会说些更详细的话:

代码语言:javascript
复制
const currentUserFromStorage = localStorage.getItem('currentUser') as string; 
const currentUser = !!currentUserFromStorage ? JSON.parse(currentUserFromStorage) : {};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67686537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档