如何为返回新类对象的函数指定类型

时间:2011-09-15 17:33:19

标签: javascript types google-closure-compiler

我正在使用谷歌闭包编译器来检查我的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的构造函数。

任何和所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

假设生成的工厂有一些公共基类或接口(我将使用KnownType)。这应该可以解决问题:

/** @type {function(new:KnownType)} */
var newClass = createFactory();

这表示“newClass”是一个使用“new”调用的函数,它返回一个KnownType实例,在这种情况下,它被声明为不带任何参数,但你可以。

CreateFactory可以将此类型声明为其返回类型,或者通常使用类型的任何位置。