Javascript 获取TypeScript中具有现有对象的类属性
我想知道是否有可能获得一个类的所有属性,该类拥有一个作为该类实例创建的对象 问题是,我正在尝试为它绑定到的任何实体创建一个通用管理页面。我使用TypeORM,并设法获取所需的实体存储库,从中我能够获得实体对象的实例 现在,我如何让这个泛型实体的类迭代它的属性?我需要它在视图端创建输入字段。当我处理现有实体时(至少当我为它们填充了所有数据时),这不是问题,但是当尝试创建新实体时,这是一个挑战,因为我得到的实例是一个原始的空对象,并且尝试console.dir时,它返回类似于Javascript 获取TypeScript中具有现有对象的类属性,javascript,typescript,typeorm,Javascript,Typescript,Typeorm,我想知道是否有可能获得一个类的所有属性,该类拥有一个作为该类实例创建的对象 问题是,我正在尝试为它绑定到的任何实体创建一个通用管理页面。我使用TypeORM,并设法获取所需的实体存储库,从中我能够获得实体对象的实例 现在,我如何让这个泛型实体的类迭代它的属性?我需要它在视图端创建输入字段。当我处理现有实体时(至少当我为它们填充了所有数据时),这不是问题,但是当尝试创建新实体时,这是一个挑战,因为我得到的实例是一个原始的空对象,并且尝试console.dir时,它返回类似于City{}的内容 以下
City{}
的内容
以下是有关该主题的一些基本代码:
public static build(req: Request, res: Response, entityRepository: Repository<any>, args: any) {
// ...
if (args.action === 'create') {
const targetEntity: Function = <Function> entityRepository.target();
let entity = entityRepository.create();
// Now I need to get the class of this entity to
//pass it to the view that will display input fields accordingly
console.dir(Object.getPrototypeOf(entity)); // Output: City {}
// ...
}
}
获取此类上自己的属性将返回[]
但是:
这将返回['bar']
那么,即使未定义类属性名的值,如何获得类属性名而不是对象属性名呢?我希望避免在每个实体上定义每一个属性,并使用诸如“”和0之类的伪值
我希望避免在每个实体上定义每一个属性,并使用诸如“”和0之类的伪值
这种伪值实际上有助于优化JavaScript运行时中JIT编译器生成的机器代码
更重要的是,您无法获取密钥名称,因为generate JavaScript在这种情况下没有内省功能
另一种方法是尝试
instanceof
,但这只告诉类的类型。。。不是它的属性 很不幸,这并没有真正起到作用。我需要获取类属性,即使它们对于当前对象是未定义的(在本例中,它们实际上是因为我得到了一个全新的基于类的对象)。我知道我可以为实体对象类定义默认属性,但如果可能的话,我宁愿避免这样做。是的,我相信这是实现我的目标的唯一途径,而且从技术上讲,除了我对代码一致性的感觉之外,不会破坏这个过程。
class Foo {
bar: any;
}
class Foo {
bar: any = "";
}