gpt4 book ai didi

javascript - typescript ,JSON.parse 错误 : "Type ' null' is not assignable to type 'string' .“

转载 作者:行者123 更新时间:2023-11-30 08:20:16 28 4
gpt4 key购买 nike

错误发生在这里:

let moonPortfolio;
...
moonPortfolio = JSON.parse(localStorage.getItem('moonPortfolio'));

我找到了 this answer这是有道理的,但是在这次重构之后我仍然得到这个错误:

As the error says, localStorage.getItem() can return either a string or null. JSON.parse() requires a string, so you should test the result of localStorage.getItem() before you try to use it.

if (portfolio.length === 0) {
const storedPortfolio = localStorage.getItem('moonPortfolio');

if (typeof storedPortfolio === 'string') {
moonPortfolio = JSON.parse(localStorage.getItem('moonPortfolio'));
}
else {
moonPortfolio = [];
}

if (moonPortfolio) {
const savedPortfolio = Object.values(moonPortfolio);
this.props.fetchAllAssets();
// this.props.addCoins(savedPortfolio);
}
}

enter image description here

我首先将 localStorage moonPortfolio 的结果设置为一个 var,然后检查 var 是否为 typeof 字符串。仍然收到 typescript 错误?

这里有什么想法或方向吗?

最佳答案

简单修复:

JSON.parse(localStorage.getItem('moonPortfolio') || '{}');

似乎 TS 实际上知道 localStorage/sessionStorage 的内部工作原理。如果您尝试获取未设置的 key ,它会返回 nullnull 当被视为 boolean 时是假的,因此通过添加 OR 将使用空的字符串化 json 对象,这意味着 JSON.parse(x) 将总是给出一个字符串,这意味着它是安全的。

关于javascript - typescript ,JSON.parse 错误 : "Type ' null' is not assignable to type 'string' .“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54715260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com