Это javascript, поэтому, когда вы пишете в локальный кэш и сериализуете свой result
в ключ "CognitoUser"
, он сохраняется как строка, которая после десериализации будет обычным старым Object
, не знающим исходного типа перед сериализацией.
Первоначальной причиной может быть то, что ваш тип "результата" может предоставлять функции, которые не сериализуемы (если не получатель или получатель с аргументами).Я предлагаю вам позвонить и сохранить все данные, которые вы хотите, в отдельных ключах и перечитать их позже.
Cache.setItem("CognitoUser", result);
Cache.setItem("CognitoUser-value-1", result.myFunction1("myArg1"));
Cache.setItem("CognitoUser-value-2", result.myFunction2("myArg2"));
// ..
var user = Cache.getItem("CognitoUser");
var myVal1 = Cache.getItem("CognitoUser-value-1");
var myVal2 = Cache.getItem("CognitoUser-value-2");
Вы также можете сохранить один единственный ключ "CognitoUser"
в вашем localStorage, если вы выполняете все указанные функциисериализации.Например, расширьте тип вашей result
, добавив функции получения прототипов (без аргументов), каждый вызывая и возвращая соответствующие myFunctionX("myArgX")
функции, чтобы они появлялись в процессе JSON.stringify .