mej*_*eji 19 reflection typescript
如何在TypeScript中循环遍历类的属性?以下面的类为例:
export class Task implements Itask {
public Id: number = 0;
public Name: string;
public Description: string;
public Completed: boolean = false;
public TaskType: TaskType;
}
Run Code Online (Sandbox Code Playgroud)
我想检索属性,因此:["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;
};
Run Code Online (Sandbox Code Playgroud)
不幸的是没有成功,我知道使用"TodoApp.Task.arguments"是不正确的.但是,有人能告诉我正确的方法吗?
lor*_*isi 11
让我们考虑所有"未定义"的属性,即在typescript类中定义的所有属性(我写的"未定义",而不是undefined由于下面将要明确的原因)
class A {
prop1: string
prop2: number
}
Run Code Online (Sandbox Code Playgroud)
不会受到任何的枚举Object.keys或this.hasOwnProperty(k)因为JavaScript有没有这些属性的知识AUTOGEN.在创建typescript类时,只有一个选项,即将所有属性初始化为默认值,如
class A {
prop1: string
prop2: number
prop3: B
constructor() {
this.prop1="";
this.prop2=-1;
this.prop3=null;
}
}
Run Code Online (Sandbox Code Playgroud)
此时,您将从A字典中获取实例的所有属性,例如此映射迭代
var a = new A();
for (var i in properties) {
if (a.hasOwnProperty(i)) {
a[i]=properties[i];
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢默认值解决方案,您仍然可以使用magic undefinedjavascript关键字执行此操作,以便您执行以下操作:
class A {
prop1: string = undefined
prop2: number = undefined
}
Run Code Online (Sandbox Code Playgroud)
此时,javascript对应项将包含模型中的所有属性,您将Object.keys(this)通过它们迭代它们或检查它们 this.hasOwnProperty
Roy*_*y J 10
在你的情况下,像:
for (var i in TodoApp.Task) {
if (TodoApp.Task.hasOwnProperty(i)) {
var th = $('<th />').append(TodoApp.Task[i]);
tHead.append(th);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33119 次 |
| 最近记录: |