【问题标题】:How to store and get an object without destroying the type in localStorage?如何在不破坏 localStorage 类型的情况下存储和获取对象?
【发布时间】:2016-03-09 02:43:51
【问题描述】:

我正在使用 TypeScript 开发一个 AngularJS 项目。

personPerson 类的对象。我需要将person 对象存储在localStorage 中并使用其类型检索它。

【问题讨论】:

    标签: typescript local-storage


    【解决方案1】:

    虽然 Martin 的答案适用于没有方法的类。对于有方法的类,你可以试试这个:

    let personFromStorage = JSON.parse(localStorage.getItem('person')) as Person;
    
    let person = new Person('');
    Object.assign(person , personFromStorage);
    

    【讨论】:

      【解决方案2】:

      window.localStorage 只能是字符串 store。您可以使用 JSON 序列化您的对象并将其取回。

      class Person {
      
          constructor(public name:string) {
      
          }
      }
      
      let person = new Person('Peter');
      localStorage.setItem('person', JSON.stringify(person));
      let personFromStorage = JSON.parse(localStorage.getItem('person')) as Person;
      
      console.log({
          person: person,
          personFromStorage: personFromStorage
      });
      

      【讨论】:

      • 据我了解,调用 JSON.Stringify 你会丢失你的方法,所以将它们从会话中拉出来然后尝试调用一个方法,你会得到“不是一个函数”。当我试图将我的所有方法移动到我的模型中时,我遇到了这个问题,就像我在其他语言中所做的那样,只是意识到我无法将带有方法的“对象”保存为字符串以外的任何东西。如果有人有一个(简单的)解决方案,我很想知道。
      猜你喜欢
      • 2014-09-15
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2021-10-04
      相关资源
      最近更新 更多