Typescript - 实现接口而不实现接口parent

时间:2016-03-07 10:58:38

标签: javascript class oop typescript extends

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

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类中定义。

基本上我要做的是创建一个从第三方JS库扩展的typescript类,我有“d.ts”文件来描述实现,但它不是源文件中的typescript

为了在第三方库中使用特定的函数,我必须创建一个自定义类,该类派生自他们在JS中提供的类,但我然后使用“prototype”覆盖它,但是我需要使用打字稿。

更新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没有提供),我需要能够使用普通的Typescript功能创建“myClass()”,同时仍然扩展和使用原始JS类中的所有内容,同时能够将我的功能添加到TS类,并在我执行时覆盖基本JS类中的功能

1 个答案:

答案 0 :(得分:0)

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