【问题标题】:Missing methods in TypeScript classTypeScript 类中缺少方法
【发布时间】:2018-12-21 20:54:01
【问题描述】:

我有一个 TypeScript 模型,其中包含如下属性和函数:

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

在创建它的实例时,我可以按预期使用这个sayHello() 方法。

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

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

否则,还有其他技术吗?例如,可以使用类型的辅助类。

【问题讨论】:

标签: javascript typescript methods


【解决方案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));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 2015-12-02
  • 2019-02-07
  • 2020-01-02
  • 2020-05-08
  • 2020-08-08
  • 2021-10-29
相关资源
最近更新 更多