Как предписать тип классу так, чтобы ts считал что мы унаслодовались?

В TypeScript для объявления наследования классом от другого класса используется ключевое слово "extends". При этом, чтобы TypeScript корректно определил тип класса и учитывал его наследование, необходимо явно указать тип класса через обобщение (generic), используя квадратные скобки.

Вот пример объявления класса с явным указанием типа и наследованием:

class Parent {
  public name: string;

  constructor(name: string) {
    this.name = name;
  }

  public sayHello(): string {
    return `Hello, my name is ${this.name}.`;
  }
}

class Child extends Parent {
  public age: number;

  constructor(name: string, age: number) {
    super(name);
    this.age = age;
  }

  public sayAge(): string {
    return `I am ${this.age} years old.`;
  }
}

В данном примере класс "Child" наследуется от класса "Parent" с помощью ключевого слова "extends". Таким образом, экземпляры класса "Child" будут иметь свойства и методы как класса "Parent", а также свои дополнительные свойства и методы.

Объявление типа класса с учетом наследования выглядит следующим образом:

class Child<T> extends Parent {
   ...
}

Здесь "T" - это обобщение (generic), используемое для явного указания типа класса. При этом, класс "Child" продолжает наследовать свойства и методы класса "Parent".

Теперь TypeScript будет понимать, что экземпляр класса "Child" имеет как свойства и методы класса "Parent", так и свои собственные свойства и методы. Это позволяет проводить статическую типизацию и обеспечивает безопасность и надежность при работе с такими классами.