我目前已經在項目中定義了以下接口打字稿 - 實現一個接口,但沒有實施的接口父母
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庫擴展,我有「d.ts」文件描述的實現,但不是在打字稿中它的源形成。
爲了在第三方庫中使用特定的函數,我必須創建一個自定義類,它們是從它們在JS中提供的類派生而來的,然後使用「prototype」重寫,但是我需要這樣做使用打字稿。
更新1
看來,人讀這是不是很讓我想要在這裏實現,所以讓我解釋多一點。
在我工作的,我們使用第三方JS LIB的項目,讓我們稱之爲「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
}
的「extendClass」方法「thirdlib」 copys我從進入我的構造函數或派生類的構造函數所以我導致相信。
然後使用以後,在「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類中的功能時做。
[這是SO回答](http://stackoverflow.com/questions/14000645/how-to-extend-native-javascript-array-in-typescript)與你的問題有關嗎? – A1rPun
有趣的是,我只是在發佈了這條消息之後發現了jqfaq帖子,並且正在使用其中的想法來查看我是否能找到任何地方。這個問題是類似的,但不完全相同,因爲SO帖子和建議的解決方案似乎都圍繞着擴展內置類型,這在試圖將它們應用到第三方JS庫時似乎並不奏效。 – shawty