0

我有一个抽象的打字稿类:

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必须有 typeSub1并且Sub2.parent必须有 type Sub2。如何在抽象的定义中指定这一点?

4

1 回答 1

1

到目前为止,您的两个类都是相同的 - 因此能够使用Abstract. 如果将成员字段添加到类中,则 tscompiler 会抱怨,例如。

class Sub2 extends Abstract {
    public test: number;
    constructor (parent?: Sub2) {
        super(parent);
    }
}

let sub2 = new Sub2 (sub1); // will not work
于 2019-04-11T14:51:37.367 回答