如何在typescript中检索类中所有属性(不包括方法)的属性名
我正试图使我的代码尽可能地反应,并且需要根据类的属性呈现我的视图,如何仅从类中检索属性名称,不包括方法等 比如说如何在typescript中检索类中所有属性(不包括方法)的属性名,typescript,Typescript,我正试图使我的代码尽可能地反应,并且需要根据类的属性呈现我的视图,如何仅从类中检索属性名称,不包括方法等 比如说 export class Customer { customerNumber: string; name: string; salesContact: string; salesContactEmailAddress: string; salesContactNumber: string; execContact: stri
export class Customer {
customerNumber: string;
name: string;
salesContact: string;
salesContactEmailAddress: string;
salesContactNumber: string;
execContact: string;
constructor(data?: any) {
...
}
toJSON() {
...
}
clone() {
...
}
}
我需要它给我一些返回的字符串数组,像这样
fields: string[] = ["customerNumber", "name", "salesContact", "salesContactEmailAddress", "salesContactNumber", "execContact"];
JavaScript不能以任何方式保存类的类型信息,因此简单的回答是在大多数情况下不可能 例如,您不能在TypeScript中执行真正的反射 较长的答案是,在类的实例中,只要属性已经初始化,就有可能实现。那你就用吧 这行不通:
class A {
prop: string;
constructor() {
}
fn() {
// ..
}
}
const a = new A();
console.log(Object.keys(a)); // []
但这将:
class A {
prop: string = "hello";
constructor() {
// Or here:
// this.prop = "hello";
}
fn() {
// ..
}
}
const a = new A();
console.log(Object.keys(a)); // ["prop"]
在某些情况下,您可能也希望使用。这和Object.key之间有一些重要的区别
您可以找到更多关于可枚举性的信息。JavaScript无法以任何方式保存类的类型信息,因此简单的回答是在大多数情况下都不可能 例如,您不能在TypeScript中执行真正的反射 较长的答案是,在类的实例中,只要属性已经初始化,就有可能实现。那你就用吧 这行不通:
class A {
prop: string;
constructor() {
}
fn() {
// ..
}
}
const a = new A();
console.log(Object.keys(a)); // []
但这将:
class A {
prop: string = "hello";
constructor() {
// Or here:
// this.prop = "hello";
}
fn() {
// ..
}
}
const a = new A();
console.log(Object.keys(a)); // ["prop"]
在某些情况下,您可能也希望使用。这和Object.key之间有一些重要的区别
您可以找到更多关于可枚举性的信息。这是无法做到的。当脚本编译为JavaScript时,Typescript将从脚本中删除所有类型信息。这限制了以这种方式使用反射的可能性。这是不可能做到的。当脚本编译为JavaScript时,Typescript将从脚本中删除所有类型信息。这限制了以这种方式使用反射的可能性。