我正在尝试使我的代码尽可能地具有响应性,并且需要基于类的属性呈现我的视图。如何仅从不包括方法等的类中检索属性名称。
例如。
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不能以任何方式保存类的类型信息,因此简短的答案是在大多数情况下是不可能的。
就像提到的Thomas Devries一样,您不能在TypeScript中执行真正的反射。
更长的答案是,有可能在类的实例中,并且只要属性已初始化。然后,您只需使用即可Object.keys()
。
这行不通:
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.getOwnPropertyNames
。和之间有一些重要的区别Object.keys()
。
您可以在此处找到有关可枚举的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句