【问题标题】:How do you get the properties of a generic type in Typescript如何在 Typescript 中获取泛型类型的属性
【发布时间】:2019-07-27 14:05:59
【问题描述】:

我在 Typescript 中创建了一个基类,它具有通用类型和填充数据表的逻辑。这个类将由 Angular 组件扩展,它们将传递各种类。我想派生泛型类型的属性,以便可以动态定义列标题。如何获取正在使用其类型的类的属性?请帮忙。

以下是我尝试做到这一点的基本内容。我试图用 Dog 或 Cat 类的属性动态填充 displayColumns:

export class MyBaseClass<T>
{
    public displayedColumns: string[] = [];

     constructor()
    {
       let dataItem: T = {} as T;
       Object.keys(dataItem).forEach((key: string) => this.displayedColumns.push(key));
    }
}

export class PetsComponent extends MyBaseClass<Dog>
{

}

export class Dog
{
    public Id: number = 0;
    public Name: string = "";
}

export class Cat
{
    public Id: number = 0;
    public Name: string = "";
}

【问题讨论】:

    标签: angular typescript generics


    【解决方案1】:

    如何获取正在使用其类型的类的属性?

    这些类型仅在编译时存在,并在生成 JavaScript 时在构建时被删除。因此,您不应依赖泛型实例中的智能运行时类型信息。

    建议

    考虑数据而不是类型。例如。将行作为string[][](行/列的二维数组)并将其留给类本身将其数据解析为所需的二维数组。

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2020-01-29
      • 1970-01-01
      • 2019-05-15
      • 2015-07-28
      • 1970-01-01
      • 2015-02-15
      • 2020-09-30
      • 2012-12-17
      相关资源
      最近更新 更多