如何在打字稿中排除方法的类中的所有属性的属性名称

用户名

我正在尝试使我的代码尽可能地具有响应性,并且需要基于类的属性呈现我的视图。如何仅从不包括方法等的类中检索属性名称。

例如。

export class Customer { 
    customerNumber: string; 
    name: string; 
    salesContact: string; 
    salesContactEmailAddress: string; 
    salesContactNumber: string; 
    execContact: string; 
    constructor(data?: any) {
        ...
    }

    toJSON() {
        ...
    }

    clone() {
        ...
    }
}

我需要它给我一些返回的字符串数组,像这样

fields: string[] = ["customerNumber", "name", "salesContact", "salesContactEmailAddress", "salesContactNumber", "execContact"];
脚趾

JavaScript不能以任何方式保存类的类型信息,因此简短的答案是在大多数情况下是不可能的。

就像提到的Thomas Devries一样,您不能在TypeScript中执行真正的反射。

更长的答案是,有可能在类的实例中,并且只要属性已初始化然后,您只需使用即可Object.keys()

这行不通:

class A {
  prop: string; 

  constructor() {
  }

  fn() {
    // ..
  }
}
const a = new A();
console.log(Object.keys(a)); // []

但这将:

class A {
  prop: string = "hello"; 

  constructor() {
    // Or here:
    // this.prop = "hello";
  }

  fn() {
    // ..
  }
}
const a = new A();
console.log(Object.keys(a)); // ["prop"]

在某些情况下,您可能也想使用Object.getOwnPropertyNames和之间有一些重要的区别Object.keys()

您可以在此处找到有关可枚举的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在打字稿中的类上计算属性?

如何在打字稿中理解“属性'名称'在类型'用户'中是私有的”

打字稿:从类型中排除所有必需的属性

如何在打字稿中组合对象属性?

如何在打字稿中定义计算属性

如何在打字稿中总结对象的属性?

如何在打字稿类中定位和修改一批属性

如何在打字稿中为现有类型添加属性?

在打字稿映射类型中更改属性名称

在打字稿中访问给定属性名称的数组

在打字稿中获取`keyof`非可选属性名称

如何从打字稿中的类型中排除仅吸气剂的属性

在打字稿类中设置未定义的属性

如何在打字稿中检索 T 类型的泛型类的名称

如何在带有打字稿的类中创建枚举属性?

如何在打字稿中使用已知类型为1个已知属性和未知属性名称建模

如何在打字稿中访问枚举的名称

如何在打字稿中创建属性数量未知的接口?

如何在打字稿中定义未知的对象属性键

如何在打字稿中安全地查询派生对象的属性?

如何在打字稿中检查对象属性的空值

如何在打字稿中创建动态嵌套的对象和对象属性

如何在打字稿中向数组的每个对象添加属性?

如何在打字稿中不使用option(?)删除属性

如何在打字稿中设置复选框属性

如何在打字稿中将对象属性值存储在数组中

在打字稿中访问类属性

如何在打字稿中检测返回的类

如何在打字稿中的类内声明枚举?