Json 如何在序列化期间忽略类的受保护只读成员
假设我在Typescript中有一个类,该类具有一个作为构造函数参数的受保护只读成员,以及多个从该类扩展并使用该属性的类:Json 如何在序列化期间忽略类的受保护只读成员,json,typescript,class,encapsulation,protected,Json,Typescript,Class,Encapsulation,Protected,假设我在Typescript中有一个类,该类具有一个作为构造函数参数的受保护只读成员,以及多个从该类扩展并使用该属性的类: class Yolo { public readonly swolo: boolean = false; // Lots of other properties constructor(protected readonly swag: string = '') {} } 我希望从JSON.stringify(new Yolo())生成的字符串没有
class Yolo {
public readonly swolo: boolean = false;
// Lots of other properties
constructor(protected readonly swag: string = '') {}
}
我希望从JSON.stringify(new Yolo())
生成的字符串没有任何swag
:
{"swolo":false, ...(Every other property except "swag")}
有没有办法通过排除(即不在JSON.stringify
上使用第二个参数)来实现这一点,因为类上还有许多其他属性,并且仍然保留Intellisense
我最初的倾向是写toJSON
,就像
public toJSON() {
const serializableEntries: {
-readonly [K in keyof Yolo]: Yolo[K]
} = {
...this
};
delete serializableEntries.swag;
return serializableEntries;
}
但这会导致编译错误,因为keyolo
不包括swag
:
{"swolo":false, ...(Every other property except "swag")}
属性“swag”在类型“{toJSON:()=>string;}”上不存在
我考虑了以下解决方法:
toJSON
readonly
从类声明中删除修饰符,并删除toJSON
swag
公之于众此
的所有属性复制到道具
中,但swag
属性除外
console.log(new Yolo("shwag").toJSON()); //{"swolo":false}
我觉得不错。希望有帮助;祝你好运
如果可以,请使用getter。对不起,我应该在说明中说明这一点,但这是不可能的,因为该属性实际上是动态的。我来换个问题。我喜欢,谢谢。我总是忘了这个功能,因为语法让我觉得很奇怪。