假设我有一个接口A,并按照Angular样式指南声明为类。此类具有许多属性,我想获取它们的名称而不必给它们分配任何值。我该如何实现?
A类:
export class A {
property1: string;
property2: string;
...
property30: string;
}
我尝试从此类实例化一个新对象并调用
Object.keys
和Object.getOwnPropertyNames
,但是这两个方法返回一个空数组,因为它们忽略了未定义的值属性。有什么办法可以绕过这种行为?还是我打破了JavaScript / TypeScript模式? :D 最佳答案
属性声明的工作方式是,它们只是向编译器提示该属性可能在运行时存在。在JavaScript中,您无需声明字段,因此在分配该字段之前,该对象将不存在。如果仅使用null
或undefined
初始化字段,则该字段将出现在对象上。这是实现您想要的最简单的方法。
另一种方法是在每个字段上使用装饰器。这会更明确,但不会更短,也不一定会出现更少的错误