所以我有一個現有的大型定義文件。可以說這是一個樹項目TypeScript定義文件。外部插件
declare module Project{
class Tree{
x: number;
y: number;
}
module Plugins{
class Plugin{
}
}
}
所以這是在主項目d.ts文件。都好。讓我們說這現在只讀,以表明它不應該被編輯。
但現在有人已經出現並決定編寫一個插件,但主定義是隻讀的,不應該被編輯。例如,有人制作了武器插件。他們需要項目插件weapon.d.ts
部分要求是這個插件添加數據到原始庫。因此,「武器」被添加到樹,它看起來像這樣在JS:
Project.Tree.prototype.weapon = X
所以項目的插件,weapon.d.ts看起來像這樣
declare module Project {
module Plugins {
class Weapons{
}
module Weapons{
class Gun{
}
}
}
}
但我怎麼能連接武器屬性到現有的主d.ts文件?
在project.d.ts文件中,Tree類必須是類,因爲您可以實例化它。我試圖創建一個ITree界面,以便class Tree implements ITree
但是當我嘗試從project-plugin-weapon.d.ts中添加到該界面時,它會抱怨我的project.d.ts文件沒有實現屬性武器。
declare module Project {
interface IGame{
weapon: Gun; //complaint that Project.d.ts::Game does not implement weapon
}
module Plugins {
class Weapon{
}
module Weapon{
class Gun{
}
}
}
}
那麼如何構造一個定義文件來解決這個問題呢?
請注意,我已經看到JQuery作爲示例,但JQuery在其定義中沒有類。 Tree()需要構造函數的事實阻止我簡單地複製JQuery-Plugin方法。
謝謝!
爲什麼你不能只傳遞多個.d.ts文件到編譯器? – Ameen 2014-09-12 16:07:51
嗨Ameen,我會很樂意,但是這個插件擴展了更大定義的部分。如果'class Gun擴展了Project.Something',它將需要在新定義中重新定義Project.Something。在這種情況下,我相信我會得到一個稍微不同但相關的錯誤,因爲Project.Tree會跨2個文件重複。 – Clark 2014-09-12 16:20:13