在 TypeScript 中获取 class 个具有现有对象的属性
Get class properties having existing object in TypeScript
我想知道是否可以获取 class 的所有属性,该对象具有作为此 class.
实例创建的对象
问题是我正在尝试为其绑定的任何实体创建一个通用管理页面。我使用 TypeORM 并设法获取所需的实体存储库,我可以从中获取实体对象的实例。
现在,如何让这个通用实体的 class 迭代其属性?我需要它在视图端创建输入字段。当我处理现有实体时(至少当我为它们填写了所有数据时)这不是问题,但在尝试创建新实体时这有点挑战,因为我得到的实例是一个原始的空对象并尝试 console.dir 它 return 类似于 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 {}
// ...
}
}
更新
我会解释一下我的问题。
我发现我可以获取对象的 class,但如果它们没有定义,我就无法获取它的属性。例如:
class Foo {
bar: any;
}
在 class returns []
.
上获得自己的财产
但是:
class Foo {
bar: any = "";
}
这将 return ['bar']
。
那么,即使没有定义它们的值,我怎样才能得到 CLASS 属性 名称而不是 OBJECT 属性 名称?我宁愿避免在每个具有虚拟值的实体上定义每个 属性,例如 '' 和 0.
I'd prefer to avoid defining every single property on every entity with dummy value like '' and 0.
这样的虚拟值实际上有助于优化 JIT 编译器在 JavaScript 运行时生成的机器码。
更重要的是,您无法获取键名,因为生成 JavaScript 没有内省功能来帮助处理这种情况。
另一种方法是尝试 instanceof
但这只会告诉 class 的 类型 ... 而不是它的属性。
我想知道是否可以获取 class 的所有属性,该对象具有作为此 class.
实例创建的对象问题是我正在尝试为其绑定的任何实体创建一个通用管理页面。我使用 TypeORM 并设法获取所需的实体存储库,我可以从中获取实体对象的实例。
现在,如何让这个通用实体的 class 迭代其属性?我需要它在视图端创建输入字段。当我处理现有实体时(至少当我为它们填写了所有数据时)这不是问题,但在尝试创建新实体时这有点挑战,因为我得到的实例是一个原始的空对象并尝试 console.dir 它 return 类似于 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 {}
// ...
}
}
更新
我会解释一下我的问题。
我发现我可以获取对象的 class,但如果它们没有定义,我就无法获取它的属性。例如:
class Foo {
bar: any;
}
在 class returns []
.
但是:
class Foo {
bar: any = "";
}
这将 return ['bar']
。
那么,即使没有定义它们的值,我怎样才能得到 CLASS 属性 名称而不是 OBJECT 属性 名称?我宁愿避免在每个具有虚拟值的实体上定义每个 属性,例如 '' 和 0.
I'd prefer to avoid defining every single property on every entity with dummy value like '' and 0.
这样的虚拟值实际上有助于优化 JIT 编译器在 JavaScript 运行时生成的机器码。
更重要的是,您无法获取键名,因为生成 JavaScript 没有内省功能来帮助处理这种情况。
另一种方法是尝试 instanceof
但这只会告诉 class 的 类型 ... 而不是它的属性。