我正在尝试为我使用的库编写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