如何在Typescript中获得泛型类型的属性

时间:2019-03-06 01:25:35

标签: angular typescript generics

我在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 = "";
}

1 个答案:

答案 0 :(得分:0)

  

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

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

建议

考虑数据而不是类型。例如。将行作为string[][](行/列的2d数组)并将其留给类自己,以将其数据解析为所需的2d数组。