Я создал базовый класс в Typescript, который имеет общий тип и логику для заполнения таблицы данных. Этот класс будет расширен компонентами Angular, которые будут проходить различные классы. Я хотел бы получить свойства универсального типа, чтобы динамически определять заголовки столбцов. Как я могу получить свойства класса, тип которого используется? Пожалуйста помоги.
Ниже голые кости того, как я пытался это сделать. Я пытался динамически заполнить отображаемые столбцы свойствами класса Dog или Cat:
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 = "";
}





How can I get the properties of the class whose type is being used?
Типы существуют только во время компиляции и стираются во время сборки, когда генерируется JavaScript. Таким образом, вы не должны полагаться на информацию о типе интеллектуальной среды выполнения из экземпляров дженериков.
Думайте с точки зрения данных, а не типов. Например. возьмите строки как string[][] (2d-массив строк/столбцов) и оставьте самим классам анализировать свои данные в требуемом 2d-массиве.