[英]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.