JSDoc:如何记录返回返回的构造函数实例的函数?

时间:2018-07-02 11:06:29

标签: javascript jsdoc

例如,我具有以下功能:

function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

我希望在将类作为参数传递时使WebStorm自动完成工作。例如:如果我调用createInstanceOf(ClassA),我想查看ClassA实例的自动补全,如果我调用createInstanceOf(ClassB)ClassB实例,则自动补全。因此,JSDoc函数必须是通用的。

使用JSDoc定义泛型函数并使@return的值类型与@param相同是很容易的,但是我发现没有办法将@param类型视为用于返回的对象。

所以这不起作用:

/**
 * @param {T} ObjectConstructor
 * @returns {T}
 * @template T
 */
function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

我也试图使它以这种方式工作:

/**
 * @param {function(new:T)} ObjectConstructor
 * @returns {T}
 * @template T
 */
function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

但是也许我使用的闭包类型错误,否则WebStorm无法解析此类通用类型。

如果有几种解决方案,我想找出哪种解决方案特别适合WebStorm IDE自动完成。

谢谢

1 个答案:

答案 0 :(得分:0)

您可能不再需要此功能,但是我也已经坚持了几个月,所以对于其他人想知道的,您可以这样做:

/**
 * @template T
 * @param {new() => T} ObjectConstructor
 * @returns {T}
 */
function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

Got the answer from this article