TypeScript 继承实现:不使用 extends、中间类、Object.assign 和 Object.setPrototypeOf
TypeScript 继承实现:不使用 extends、中间类、Object.assign 和 Object.setPrototypeOf
在 TypeScript 中,我们可以使用 extends 关键字来实现继承。然而,有时我们可能需要在不使用 extends 关键字的情况下实现继承,并且需要保留子类自身的方法。例如,以下代码演示了如何通过原型链实现继承,并保留子类 methodC 的内容:
class Parent {
constructor() {}
public methodA() {}
public methodB() {}
}
class Child {
constructor() {
const parent = new Parent();
Object.setPrototypeOf(this, parent);
}
public methodC() {}
}
在 Child 类中,我们通过创建一个 Parent 的实例,并将该实例设置为 Child 的原型对象来实现继承。这种方式可以保证 Child 实例可以访问 Parent 的方法 methodA 和 methodB,同时 Child 自身的原型对象没有被修改,因此 Child 的原型链上仍然存在 methodC 方法。
注意:
-
Object.setPrototypeOf方法用于修改对象的原型对象,它不会覆盖原有的原型对象,而是将其替换为新的原型对象。 -
在使用原型链实现继承时,需要注意原型对象和实例对象之间的关系。原型对象是所有实例对象共享的,因此对原型对象的修改会影响所有实例对象。
通过这种方法,我们可以实现继承并保留子类的自身方法,并且不使用中间类、Object.assign 和 Object.setPrototypeOf。
原文地址: https://www.cveoy.top/t/topic/o0FI 著作权归作者所有。请勿转载和采集!