javascript - 如何在 JSDoc 中指定类的类型(不是它的实例)
问题描述
我有课:
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}
无效,因为它指定了模型的实例。
解决方案
你不妨试试这个:
/**
* @param {Model.constructor} ModelType
*/
function doSomething(ModelType) {
// ...
}
也就是说,您可以通过其constructor
属性来引用对象(本质上是类)的构造函数,该属性是任何 JavaScript 对象的内置属性。
根据您的环境,您可能还想尝试以下方法:
/**
* @param {typeof Model} ModelType
*/
JSDoc 使用的Closure Compiler支持这种类型表达式,尽管我个人没有使用它,因为我的部分工具链不支持这种特定语法。
另请参阅此JSDoc Typeof Plugin,这是最终在 VSCode 中为我工作的解决方案。
推荐阅读
- python - 我无法在我的 ubuntu 21.04 上安装 pychecker
- r - 以闪亮的方式存储和更新数据
- javascript - 将乐谱数据保存在文本文件中
- javascript - 如何使用 PHP str_replace 处理条件
- blazor - 单击浏览器的刷新按钮时如何调用方法?
- amazon-web-services - 无法跨账户使用 Lambda 将 ACM 公共证书附加到 ALB 侦听器
- java - 使用java8将列表转换为地图
- python-3.x - 从 keras 到 pytorch 的自定义层
- electron - Electron:如何获取 webContents(检查 backgroundThrottling)?
- amazon-web-services - 使用无服务器框架将 AWS WAF 与 API 网关相关联