我在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 = "";
}
答案 0 :(得分:0)
如何获取正在使用其类型的类的属性?
这些类型仅在编译时存在,并在生成JavaScript时在构建时删除。因此,您不应依赖泛型实例的智能运行时类型信息。
考虑数据而不是类型。例如。将行作为string[][]
(行/列的2d数组)并将其留给类自己,以将其数据解析为所需的2d数组。