gpt4 book ai didi

typescript 循环遍历类类型属性

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:16 28 4
gpt4 key购买 nike

如何在 TypeScript 中循环遍历类的属性?以下面的类为例:

export class Task implements Itask {
public Id: number = 0;
public Name: string;
public Description: string;
public Completed: boolean = false;
public TaskType: TaskType;
}

我想检索属性,因此:["Id", Name", "Description", "Completed", "TaskType"]

尝试过

GetTaskHeaders = () => {
const _self = this;
const tHead = $('<thead />').append('<tr />');

for (let i = 0; typeof TodoApp.Task.arguments; i++) {
const th = $('<th />');
th.append(TodoApp.Task.arguments[i]);
tHead.append(th);
}

console.log(tHead);

return tHead;
};

不幸的是没有成功,我知道使用“TodoApp.Task.arguments”是不正确的。但是,有人可以告诉我正确的方法吗?

最佳答案

让我们考虑所有“未定义”的属性,即在 typescript 类中定义的所有属性(我写的是“未定义”而不是undefined,原因在下面会很清楚)

class A { 

prop1: string
prop2: number

}

不会被任何 Object.keysthis.hasOwnProperty(k) 枚举,因为 autogen javascript 不知道这些属性。当您创建 typescript 类时,您只有一个选择,那就是将所有属性初始化为默认值,例如

class A { 

prop1: string
prop2: number
prop3: B

constructor() {
this.prop1="";
this.prop2=-1;
this.prop3=null;
}

}

此时你将从字典中获取 A 实例的所有属性,就像在这个映射迭代中一样

var a = new A();
for (var i in properties) {
if (a.hasOwnProperty(i)) {
a[i]=properties[i];
}
}

如果您不喜欢默认值解决方案,您仍然可以使用神奇的 undefined javascript 关键字来执行此操作,这样您就可以:

class A { 

prop1: string = undefined
prop2: number = undefined

}

此时对应的 javascript 将拥有模型中的所有属性,您将使用 Object.keys(this) 迭代它们或通过 this.hasOwnProperty 检查它们

关于 typescript 循环遍历类类型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944763/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com