gpt4 book ai didi

typescript - 获取类的属性

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

有没有办法在 TypeScript 中获取类的属性名称?

在示例中,我想“描述”类 A 或任何类并获取其属性的数组(也许只有 public 的?),是可能吗?还是应该先实例化对象?

class A {
private a1;
private a2;
/** Getters and Setters */

}

class Describer<E> {
toBeDescribed:E ;
describe(): Array<string> {
/**
* Do something with 'toBeDescribed'
*/
return ['a1', 'a2']; //<- Example
}
}

let describer = new Describer<A>();
let x= describer.describe();
/** x should be ['a1', 'a2'] */

最佳答案

这个 TypeScript 代码

class A {
private a1;
public a2;
}

编译成这段 JavaScript 代码

class A {
}

那是因为 JavaScript 中的属性只有在具有一定值(value)后才开始存在。您必须为属性分配一些值。

class A {
private a1 = "";
public a2 = "";
}

编译为

class A {
constructor() {
this.a1 = "";
this.a2 = "";
}
}

不过,您不能仅从类中获取属性(您只能从原型(prototype)中获取方法)。您必须创建一个实例。然后通过调用 Object.getOwnPropertyNames() 获取属性。

let a = new A();
let array = return Object.getOwnPropertyNames(a);

array[0] === "a1";
array[1] === "a2";

应用于您的示例

class Describer {
static describe(instance): Array<string> {
return Object.getOwnPropertyNames(instance);
}
}

let a = new A();
let x = Describer.describe(a);

关于typescript - 获取类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636292/

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