打字稿类中的方法缺失

时间:2018-07-13 12:59:53

标签: typescript

我有一个打字稿模型,其中包含诸如以下的属性和功能:

class Person {
name: string
sayHello(){ console.log(name); }
}

当我实例化对象时,可以按预期使用此sayHello方法。

当我从本地存储或从外部Web服务获取对象时出现问题。 虽然属性仍然存在,但是方法已经消失了。 (显然是因为它只是文本)。

有什么方法可以恢复对象的完整性,以便能够使用其功能?

否则,还有其他方法吗?例如,可以使用type的辅助类。

谢谢

1 个答案:

答案 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));