在使用typescript接口时,如何处理原型类

How do I deal with prototype classes when working with typescript interfaces

本文关键字:处理 原型 何处理 typescript 接口      更新时间:2023-09-26

让我们建议我有一个处理大部分对象管理的数据库。对于每个资源,它允许我选择一个基类,它将自己的原型函数添加到该基类中

例如,如果我有,

  interface IJob
  {
     openJob();
  }
  class Job : IJob
  {
     openJob() => {console.log('open');}
  }

然后通过创建我的作业Store.job.create();它返回类的一个实例,但它也用原型函数装饰它,如.save()、.update()等

问题是,如果我试图在作业实例上使用.save(),它是未定义的,因为接口没有定义它。现在,如果我定义了它,它希望我在类中定义.save/.update,而我并不真的想这样做,因为存储区已经在向类中添加原型函数了。

有没有最好的方法来处理这个问题?

作为参考,我尝试使用js数据作为我的数据存储库。

现在,如果我定义了它,它希望我在类中定义.save/.update,但我并不想这样做,因为商店已经在向类中添加原型函数了。

你要找的是mixin。还有一些关于mixin的官方链接:https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Mixins.md这向表明,即使您没有定义它们,也需要在类中声明它们(并且它们会混合在一起)。