繁体   English   中英

打字稿-在不实现接口父级的情况下实现接口

[英]Typescript - implementing an interface without implementing the interfaces parents

我目前在项目中定义了以下接口

interface foo {
  fooProperty: number;
  fooFunction(): void;
}

interface bar extends foo {
  barProperty: string;
  barFunction(): void;
}

现在我想定义一个类

class myBar implements bar {
  public barProperty: string ="bar";
  public barFunction() {
    // do dosmething
  }
}

但是我也不想实现foo的函数和属性,因为这些已经在接口定义的现有JS类中进行了定义。

本质上,我想做的是创建一个TypeScript类,该类是从第三方JS库扩展而来的,我为该库提供了描述实现的“ d.ts”文件,但源代码中没有Typescript。

为了在第3方库中使用特定功能,我必须创建一个自定义类,该类派生自它们在JS中提供的类,但是我随后使用“原型”重写了该类,但是我需要使用打字稿来进行此操作。

更新1

似乎阅读此书的人并没有完全理解我在这里想要实现的目标,所以让我详细说明一下。

在我正在研究的项目中,我们使用第三方JS库,我们称其为“ thirdLib.js”

在“ thirdLib.js”中有一些功能,为了使用它,需要我扩展作为“ thirdLib.js”一部分提供的JS样式类,如下所示:

function myClass(){
  thirdlib.thirdclass.call(this);
}

thirdLib.utilities.extendclass(myClass, thirdLib.thirdClass);

myClass.prototype.overriddenFunc = function(){
  // Do custom function here
}

“ thirdlib”中的“ extendClass”方法将我从中派生的类的构造函数复制到我的构造函数中,或者我因此相信。

然后在以后的“ thirdlib.js” EG中的其他地方使用它:

var myStuff = new thirdLib();
var theClass = new myClass();

myStuff.registerSomething(theClass);
myStuff.doAThing();

在我称之为“ doAThing”的那一点上,thirdLib.js已向其注册了新的JS类,并且该类具有“ thirdClass”中存在的所有原始功能,但已添加了MY自定义项。

我为“ thirdLib.js”所拥有的只是JavaScript代码(Minified)和一组Typescript定义文件(这是我自己写的,因为没有lib提供),我需要能够创建“ myClass”。 ()”,使用普通的Typescript功能,同时仍然可以扩展和使用原始JS类中的所有内容,并且可以将我的功能添加到TS类中,并在我这样做时覆盖基本JS类中的功能。

如果我的问题正确,则可以让您的类myB​​ar扩展类myFoo,从而继承给定的实现并满足接口中定义的条件。

暂无
暂无

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

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