我正在努力定义一个正确获取基类子类的方法。
handle(content: AbstractClass)
直接使用继承类调用它会导致类型'ConcreteClass'的参数不能分配给'AbstractClass'类型的参数。
我已尝试使用界面,类似结果类型'typeof ConcreteClass'的参数不能分配给'Interface'类型的参数
class AbstractClass implements Interface
handle(content: Interface)
我找到了类似topic的问题,但解决方案也没有帮助我。
interface ClassConstructor<T extends AbstractClass> {
new(): T;
}
abstract class AbstractClass {
private test: string;
constructor(value: string) {}
}
class B extends AbstractClass {
private test2: string;
constructor(value: string, value2: number) {
super(modal);
}
}
class S1 {
show(content: ClassConstructor<AbstractClass>) {}
b() {
this.a(B);
}
}
上
我希望实现方法show
可以采用 AbstractClass 的每个实现,而不管它是如何定义的。不同的构造者和类似的
我通过构造函数将它与Angular和Angular resolve依赖项结合使用。
如何使用TypeScript执行此操作?
答案 0 :(得分:0)
那是因为构造函数的签名不匹配。
这有效:
interface ClassConstructor<T extends A> {
new(value: string): T;
}
class B extends A {
private test2: string;
constructor(value: string) {
super(value);
}
}
class S1 {
a(content: ClassConstructor<B>) {}
b() {
this.a(B);
}
}
现在不同的构造函数共享相同的签名。