Возможно ли так типизировать класс?

Да, в TypeScript можно полноценно типизировать классы. Классы в TypeScript позволяют явно указывать типы для свойств класса, параметров конструктора, а также тип возвращаемого значения методов.

Пример типизированного класса в TypeScript:

class Person {
    name: string;
    age: number;

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

    greet(): string {
        return `Hello, my name is ${this.name} and I am ${this.age} years old.`;
    }
}

const person = new Person('Alice', 30);
console.log(person.greet()); // Output: Hello, my name is Alice and I am 30 years old.

В данном примере класс Person имеет два свойства name и age, которые имеют явно указанные типы string и number соответственно. Конструктор класса принимает аргументы типа string и number, а метод greet() возвращает строку.

Также в TypeScript есть возможность создания обобщенных (generic) классов, которые могут принимать параметры типа. Обобщенные классы позволяют создавать классы, которые могут работать с различными типами данных, обеспечивая повторное использование кода и безопасность типов.

Таким образом, TypeScript предоставляет широкие возможности для типизации классов, что помогает разработчикам избежать ошибок на этапе компиляции и улучшить читаемость и поддерживаемость кода.