[英]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中提供的类,但是我随后使用“原型”重写了该类,但是我需要使用打字稿来进行此操作。
似乎阅读此书的人并没有完全理解我在这里想要实现的目标,所以让我详细说明一下。
在我正在研究的项目中,我们使用第三方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类中的功能。
如果我的问题正确,则可以让您的类myBar扩展类myFoo,从而继承给定的实现并满足接口中定义的条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.