【问题标题】:typescript: type of derived class in superclasstypescript:超类中派生类的类型
【发布时间】:2019-04-11 14:39:32
【问题描述】:

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

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 的定义中指定这一点?

【问题讨论】:

    标签: typescript inheritance


    【解决方案1】:

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

    class Sub2 extends Abstract {
        public test: number;
        constructor (parent?: Sub2) {
            super(parent);
        }
    }
    
    let sub2 = new Sub2 (sub1); // will not work
    

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多