class SuperClass { ... }
class SubClass1 extends SuperClass { ... }
class SubClass2 extends SuperClass { ... }
class SubClass3 extends SuperClass { ... }
const foo: ??? = ...
Для foo
Я хотел бы указать тип, который означает, что foo
является экземпляром любого класса, расширяющего SuperClass
. Я знаю, что мог бы использовать типы объединения и перечислить все подклассы, но должен быть лучший способ. Каким-то образом с extends
или как это сделать?
Обновление:
Причина, по которой я спрашиваю это, заключается в том, что у меня есть эта проблема:
type SomeType = { foo: SuperClass };
public someMethod<T extends SuperClass>() {
const bar: SomeType = ... ;
const someSet: Set<T> = new Set();
someSet.add(bar.foo);
Аргумент типа 'SuperClass' не может быть назначен параметру типа 'T'. «Суперкласс» может быть назначен ограничению типа «Т», но экземпляр «Т» может быть создан с другим подтипом ограничения «Суперкласс».
Хмм .. возможно, я должен просто изменить Set<T>
до Set<SuperClass>
.