我有一个抽象的打字稿课:
abstract class Abstract {
constructor (public parent?: Abstract) {
}
}
现在,我定义2个子类:
class Sub1 extends Abstract {
}
class Sub2 extends Abstract {
}
parent的类型为Abstract,所以这是可能的:
let sub1 = new Sub1 ();
let sub2 = new Sub2 (sub1);
但是我希望Sub1.parent
必须具有类型Sub1
,而Sub2.parent
必须具有类型Sub2
。如何在Abstract的定义中指定?
答案 0 :(得分:1)
到目前为止,您的两个类都是相同的-因此能够使用Abstract
的任何实例是正确的。如果您将成员字段添加到该类,则tscompiler会抱怨例如。
class Sub2 extends Abstract {
public test: number;
constructor (parent?: Sub2) {
super(parent);
}
}
let sub2 = new Sub2 (sub1); // will not work