簡體   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