繁体   English   中英

如何在 TypeScript 类中创建后期绑定克隆方法?

[英]How do I create a late-binding clone method in TypeScript classes?

我想为我的所有数据类制作一个简单的 Cloneable 接口,在 JavaScript 中很容易做到。 但是如何在 TypeScript 中正确键入它并不明显。

我目前正在像这样一起破解它:

class BaseClass implements Cloneable {
  clone() {
    return new (this.constructor as any)(this.data);
  }
}

我希望所有子类的clone方法返回它们自己的类型而不是BaseClass 例如:

class ExampleSubclass extends BaseClass {}

const foo = new ExampleSubclass();
const bar = foo.clone(); // Expecting `bar` to be `ExampleSubclass`, neither `BaseClass` nor `Cloneable`.

有没有更合适的方法来进行后期绑定?

我相信你应该投它

class BaseClass {
  clone() {
    return new (this.constructor as any)(this.data) as typeof this;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM