我上过课:
class Model {
static get schema() { } // static property 'schema'
}
class CustomModel_1 extends Model { }
. . .
class CustomModel_N extends Model { }
我想声明一个带有指定模型类型(而不是该类型实例)的参数的新函数:
/**
* @param {Model} ModelType <== it is a wrong type because it is an instance of Model
*/
function doSomething(ModelType) {
const schema = ModelType.schema // <== WebStorm emphasizes 'schema'
}
如何在JSDoc中指定它?表达式{Model}
无效,因为它指定了Model的实例。
答案 0 :(得分:1)
您不妨尝试一下:
/**
* @param {Model.constructor} ModelType
*/
function doSomething(ModelType) {
// ...
}
也就是说,您可以通过其constructor
属性(它是任何JavaScript对象的内置属性)来引用对象(本质上是类)的构造函数。
根据您的环境,您可能还需要尝试以下操作:
/**
* @param {typeof Model} ModelType
*/
JSDoc使用的Closure Compiler支持这种类型的表达式,尽管我个人不使用它,因为我的工具链中的一部分不支持这种特定语法。
也请参见JSDoc Typeof Plugin,这是最终在VSCode中对我有用的解决方案。