【发布时间】:2025-12-02 06:25:01
【问题描述】:
我无法将复杂的 TypeScript 对象存储到浏览器的存储中,因为它必须被序列化为 JSON 字符串。
class ComplexObject {
constructor(
public date: Date,
public child: SimpleObject,
) {}
getContent() {
return this.child.content
}
}
class SimpleObject {
constructor(
public content: string,
) {}
}
虽然 const store = JSON.stringify(new ComplexObject(new Date(), new SimpleObject('test'))) 生成 JSON 我可以接受,但 const restored = JSON.parse(store) 将是一个完全不同的对象。
-
restored.date是一个字符串,而不是Date了 -
restored.getContent()产生类型错误,因为该对象不再存在该函数
当前的解决方法
我已经尝试了一些序列化库,例如cerialize,我已经开始工作了。但是我发现的所有库都需要使用 @Serialize() 等装饰器显式标记属性或至少类。
这个样板让我很困扰,因为我相信 TypeScript 已经拥有将对象序列化和正确反序列化为 JSON 所需的所有信息。我必须手动添加的每一行都会增加出现愚蠢错误的可能性,而且根本不好玩。
问题
是否有一些库不需要手动装饰器,只需要一个 TypeScript 对象,将其序列化为 JSON 字符串,然后提供一种从该字符串恢复正确对象的方法?
如果不是,为什么要利用 TypeScript 的信息这么难?核心难点是什么?
【问题讨论】:
-
看看我对*.com/questions/16261119/…的回答
标签: json typescript serialization