我正在使用谷歌闭包编译器来检查我的javascript代码。我有一个创建然后返回一个新“类”的函数。也就是说,一个函数返回一个可以对其应用new的对象并返回该类的“实例”对象。如,
var newclass = createFactory('Car');
var acar = new newclass();
acar.show(); // executes newclass.prototype.show()
newclass.staticmethod(); // executes newclass.staticmethod()
show和staticmethods是由createFactory
方法创建的。
我无法为google闭包编译器定义新类的类型,因此它将newclass识别为具有类方法staticmethod
和实例方法show
的构造函数。
任何和所有帮助将不胜感激。
答案 0 :(得分:1)
假设生成的工厂有一些公共基类或接口(我将使用KnownType)。这应该可以解决问题:
/** @type {function(new:KnownType)} */
var newClass = createFactory();
这表示“newClass”是一个使用“new”调用的函数,它返回一个KnownType实例,在这种情况下,它被声明为不带任何参数,但你可以。
CreateFactory
可以将此类型声明为其返回类型,或者通常使用类型的任何位置。