【发布时间】:2016-10-13 22:09:30
【问题描述】:
我有一些对象实现了一些接口,但它们也有额外的属性。 当我对它们进行序列化(以保存在文件中)时,我想删除所有这些额外的属性,并只保留与接口匹配的属性。
有没有办法“清理”关于给定接口的对象。 我正在尝试
Object.getOwnPropertyNames(myObject)
获取对象属性的完整列表,并与接口属性的完整列表进行比较,但我找不到获取接口属性列表的方法
编辑:我在这里找到了一种方法:How can I create an object based on an interface file definition in TypeScript?
与
var object = <IMyInterface>{};
但是我看到当我使用 Object.getOwnPropertyNames(myObject) 时,这仅适用于已定义的属性,如果未定义属性,则它不在结果中。有没有一种方法可以获取所有可用的属性,而不仅仅是定义的属性?
【问题讨论】:
-
你能发布一个属性的例子吗?
-
例如对于 Person 对象:姓名、姓氏、年龄、性别。并使用 IPerson 接口,例如:姓名、姓氏、年龄。我希望能够保存不包括“性别”属性的对象,因为它不在界面中
-
接口在运行时不存在,所以你不能这样做。您可以做的是为每个接口创建一个列表,其中包含该接口的属性名称,然后在运行时对其进行迭代
-
@NitzanTomer 你能解释一下吗?我不明白
标签: angular typescript