我有一个打字稿模型,其中包含诸如以下的属性和功能:
class Person {
name: string
sayHello(){ console.log(name); }
}
当我实例化对象时,可以按预期使用此sayHello方法。
当我从本地存储或从外部Web服务获取对象时出现问题。 虽然属性仍然存在,但是方法已经消失了。 (显然是因为它只是文本)。
有什么方法可以恢复对象的完整性,以便能够使用其功能?
否则,还有其他方法吗?例如,可以使用type的辅助类。
谢谢
答案 0 :(得分:1)
当您保存这样的本地存储时,您将保存类数据的JSON表示形式,当您从本地存储取回对象时,将只是一个对象而不是原始类的实例。
您可以寻找一个可以帮助您解决此问题的外部库,但是简单的解决方案是创建该类的新实例,并使用Object.assign
将字段值分配给该类:
class Person {
public constructor(public name?: string){}
sayHello() { console.log(name); }
}
let p = new Person("Test");
let data = JSON.stringify(p);
let p2 = new Person()
Object.assign(p2, JSON.parse(data));