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

How to specify a type for a function that returns a new class object

本文关键字:函数 类型 对象 返回 新类      更新时间:2023-09-26

我正在使用谷歌闭包编译器来检查我的javascript代码。我有一个函数,它创建并返回一个新的"类"。也就是说,一个函数返回一个可以应用new的对象,并返回该类的一个"实例"对象。例如,

var newclass = createFactory('Car');
var acar = new newclass();
acar.show();     // executes newclass.prototype.show()
newclass.staticmethod();   // executes newclass.staticmethod()

show和staticmethod是由createFactory方法创建的。

我有麻烦定义newclass的类型到谷歌闭包编译器,以便它识别newclass作为一个构造函数,它有一个类方法staticmethod和一个实例方法show

我将不胜感激。

假设生成的工厂有一些公共基类或接口(我将使用KnownType)。这应该能奏效:

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

这里说的是"newClass"是一个用"new"调用的函数,它返回一个KnownType的实例,在这种情况下,它被声明为不接受任何参数,但是你可以。

CreateFactory可以声明此类型作为其返回类型,或者在您通常使用类型的任何地方。