如何迭代typescript中的对象属性

lyr7nygr  于 2022-12-14  发布在  TypeScript
关注(0)|答案(2)|浏览(167)

我有一个接口

export interface IFilaActividad {
 [key: string]: any
}

我在其中动态创建属性

var filaActividad: IFilaActividad = {}

this.columnsToDisplay.forEach(c => {
  Object.defineProperty(filaActividad, c, {});
}
);

我看到了我的属性,现在我想记录它们

for (let prop in filaActividad) {
  console.log("Propiedades", prop);
}

但没有记录任何内容,永远不会在for
有什么想法吗?
谢谢

rhfm7lfc

rhfm7lfc1#

默认情况下,使用Object.defineProperty()添加的属性不可写、不可枚举且不可配置!
当你用这种方式定义一个属性时,默认情况下,你不能覆盖它,删除它,或者通过for...inObject.keys访问它!为了实现这一点,你需要为第三个参数,数据描述符对象提供额外的标志。
欧洲

Object.defineProperty(filaActividad, c, {});

...你应该...

Object.defineProperty(filaActividad, c, {
    configurable: true,
    writable: true,
    enumerable: true,
    value: undefined
});

Source

laawzig2

laawzig22#

您看不到任何内容,因为对象中的所有值都是undefined(基于发布的图像)。
如果您想查看对象的keys,则只需记录prop

for (let prop in filaActividad) {
  console.log("key", prop);
  console.log("the value of that prop: ", filaActividad[prop])
}

如果你只对你的对象键感兴趣,你也可以使用Object.keys

const myKeys = Object.keys(filaActividad); // string[]

for (const key of myKeys) {
  console.log("key : ", key);
}

相关问题