TypeScript 继承实现:不使用 extends 关键字的原型链继承
在 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 方法。
解释:
- 创建中间类:
class Middle extends Parent {}创建一个空类Middle继承Parent类。由于Middle类是空的,它不会引入额外的属性或方法。 - 设置原型链:
Object.setPrototypeOf(Child.prototype, Middle.prototype);将Child类的原型指向Middle的原型,从而将Parent的方法继承到Child类中。
通过这种方式,即使没有使用 extends 关键字,我们也可以实现继承,并保留子类的方法。
原文地址: https://www.cveoy.top/t/topic/o0Ff 著作权归作者所有。请勿转载和采集!