【发布时间】:2018-12-10 14:19:16
【问题描述】:
例如,我有以下功能:
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 无法解析此类泛型类型。
如果 JSDoc 有多种解决方案,我想找出哪些解决方案专门用于 WebStorm IDE 自动补全。
谢谢
【问题讨论】:
-
This question 可能会有所帮助。
-
@RichardSzakacs,感谢您的建议。我已经尝试过答案中建议的闭包类型。更新了我的问题:添加了一个我想出的无效示例
-
不客气!我刚刚删除了我原来的答案,因为我自己也在寻找这个功能,但显然目前只有 Google Closure 支持
@template,JSDoc 没有任何关于它的文档,我无法告诉,我们什么时候才能为这个功能找到一个可行的解决方案。但我希望... -
我也会对更好的方法感兴趣...目前我只是在使用
/** @type {SomeType} */ const instance = createInstanceOf(SomeType);之类的东西来解决我正在使用这种方法的任何地方
标签: javascript webstorm jsdoc