在 TypeScript 中,如果不能使用 extends 关键字实现继承,可以通过原型链来实现。以下步骤展示了如何创建一个空的中间类,将父类的原型指向该中间类的实例,然后将子类的原型指向该中间类的实例,从而实现继承并保留子类方法。

代码示例:

class Parent {
  constructor() {}
  public methodA() {}
  public methodB() {}
}

const parent = new Parent();

class Middle extends Parent {}

class Child {
  constructor() {
    Object.setPrototypeOf(Child.prototype, Middle.prototype);
  }
  public methodC() {}
}

const child = new Child();
child.methodA();
child.methodB();
child.methodC();

在这个例子中,我们创建了一个名为 Middle 的中间类,将 Parent 的原型指向 Middle 的实例。然后,将 Child 的原型指向 Middle 的实例。这样,Child 类就可以继承 Parent 类的方法,并且保留了自己的 methodC 方法。

解释:

  1. 创建中间类: class Middle extends Parent {} 创建一个空类 Middle 继承 Parent 类。由于 Middle 类是空的,它不会引入额外的属性或方法。
  2. 设置原型链: Object.setPrototypeOf(Child.prototype, Middle.prototype);Child 类的原型指向 Middle 的原型,从而将 Parent 的方法继承到 Child 类中。

通过这种方式,即使没有使用 extends 关键字,我们也可以实现继承,并保留子类的方法。


原文地址: https://www.cveoy.top/t/topic/o0Ff 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录