假设我有一个接口A,并按照Angular样式指南声明为类。此类具有许多属性,我想获取它们的名称而不必给它们分配任何值。我该如何实现?

A类:

export class A {
  property1: string;
  property2: string;
  ...
  property30: string;
}


我尝试从此类实例化一个新对象并调用Object.keysObject.getOwnPropertyNames,但是这两个方法返回一个空数组,因为它们忽略了未定义的值属性。有什么办法可以绕过这种行为?还是我打破了JavaScript / TypeScript模式? :D

最佳答案

属性声明的工作方式是,它们只是向编译器提示该属性可能在运行时存在。在JavaScript中,您无需声明字段,因此在分配该字段之前,该对象将不存在。如果仅使用nullundefined初始化字段,则该字段将出现在对象上。这是实现您想要的最简单的方法。

另一种方法是在每个字段上使用装饰器。这会更明确,但不会更短,也不一定会出现更少的错误

09-25 16:55
查看更多