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'。 “ SuperClass”可分配给类型“ T”的约束,但“ T” 可以用不同的约束子类型实例化 “超一流”。
嗯..也许我应该将Set<T>
更改为Set<SuperClass>
。
答案 0 :(得分:1)
这是一个变体:
interface Interface {}
class SuperClass implements Interface{ }
class SubClass1 extends SuperClass { }
const foo: Interface = new SubClass1();
答案 1 :(得分:1)
如果您真的想使用泛型类型,那么我能想到的最接近的答案是:
interface SuperClass {
a: string;
}
type SomeType<T extends SuperClass> = { foo: T };
function someMethod<T extends SuperClass>(bar: SomeType<T>) {
const someSet: Set<T> = new Set();
someSet.add(bar.foo);
}
答案 2 :(得分:0)
您想实现什么? SuperClass
应该适合???
。如果您希望它成为SuperClass的每个子类的并集:那么,不可能