我正在嘗試爲我使用的庫編寫TypeScript定義。它有一個插件系統,除了插件以外,我無法控制它,必須擴展Plugin
。所述PluginManager
具有如下功能:參數是一個類的聲明函數,返回該類的一個實例?
add(plugin: any, ...parameters: any[]): any;
哪裏參數插件是一類(Apple.Tree),並返回一個instanceof Apple.Tree。 Apple.Tree擴展插件。
有沒有什麼辦法讓這個泛型函數保持這種類型?
我嘗試這樣做:
add<T extends Plugin>(plugin: T, ...parameters: any[]): T;
當我嘗試,雖然這個功能調用它,它說。 Argument of type "typeof Apple.Tree" is not assignable to parameter of type "Plugin"
它說在Apple.Tree中缺少一個屬性。但是,由於Apple.Tree擴展了插件,它正在抱怨那裏有一些東西。我有一種感覺,它可能與這個通用函數有關。
我將不勝感激任何意見。
其實,我只注意到插件有一個構造'(遊戲:任何,父母?:任何)'。這可能是缺少的參考。但是,這爲我的問題增添了一層複雜性。也許不會,因爲'PluginManager'有它自己的'game'實例。而'parent'是'PluginManager'。所以這個函數不應該關心提供對這些參數的訪問。 – user1059939