Для обоих классов и интерфейсов в качестве базовых необходимо ограничить T
следующим образом:
export class NewClass<T extends BaseClass> {
}
В то время как вы получаете классы из интерфейсов с implements
, это не относится к общим ограничениям, что делает этот код возможным:
export class NewClass<T extends BaseInterface> implements BaseInterface {
}