Думайте о localStorage как словаре значений ключа.
Вы используете строковые ключи для получения / установки строковых значений. (подробнее об этом в Документы MDN )
Так что для объектов вы можете сделать, например:
let myObj = {};
my["myKey"] = "myVal"; // note that in objects, values don't need to be strings
my["myKey2"] = 2;
my["myKey3"] = {};
В localStorage, однако, это строки с обеих сторон:
localStorage.setItem("currentUser", {username: "ganes"}); // BAD
localStorage.setItem({username: "ganes"}, "someValue"); // BAD
localStorage.getItem({username: "ganes"}) // BAD
let currentUserDataStr = localStorage.getItem("currentUser"); // GOOD
// something along these lines
let currentUserData = JSON.parse(currentUserDataStr);
// do some mutation on currentUserData
currentUserData.currentUser = "ganesNew"
let newUserDataStr = JSON.stringify(currentUserData)
localStorage.setItem("currentUser", newUserDataStr); // GOOD