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

mvl*_*bat 10 javascript jsdoc webstorm

例如,我有以下功能:

\n\n
function createInstanceOf(ObjectConstructor) {\n  return new ObjectConstructor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我传递一个类作为参数时,我想让 WebStorm 自动完成功能正常工作。例如:如果我打电话,createInstanceOf(ClassA)我想看到自动完成,例如ClassA,如果我打电话createInstanceOf(ClassB)\xe2\x80\x93 ClassB。所以 JSDoc 函数必须是通用的。

\n\n

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

\n\n

所以这不起作用:

\n\n
/**\n * @param {T} ObjectConstructor\n * @returns {T}\n * @template T\n */\nfunction createInstanceOf(ObjectConstructor) {\n  return new ObjectConstructor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也尝试让它以这种方式工作:

\n\n
/**\n * @param {function(new:T)} ObjectConstructor\n * @returns {T}\n * @template T\n */\nfunction createInstanceOf(ObjectConstructor) {\n  return new ObjectConstructor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但也许我错误地使用了闭包类型,或者 WebStorm 无法解析此类泛型类型。

\n\n

如果 JSDoc 有多种解决方案,我想找出哪些专门适用于 WebStorm IDE 自动完成功能。

\n\n

谢谢

\n

Can*_*oso 11

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

/**
 * @template T
 * @param {new() => T} ObjectConstructor
 * @returns {T}
 */
function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}
Run Code Online (Sandbox Code Playgroud)

从这篇文章中得到了答案