如何解决VSCode和JSDoc-重载类类型定义
我有一个有趣的情况,我试图重载类实例的JSDoc类型,因为实例属性是基于外部架构动态生成的。基本上,我有一个基类和一个子类,并且该子类在类定义中没有任何实际的JavaScript属性,但是实例化后,最终实例将具有基于外部模式定义的属性(通过基类中的魔术)
例如:
class Base {
constructor () {
// read this.schema and build out dynamic properties
...
}
copy () {
...
}
}
class FooSubClass extends Base {
get schema () {
return '/path/to/my-schema.json'
}
}
我已经从模式中生成了一个foo-sub-class.d.ts
文件,并试图以各种方式对其进行分配,但是VSCode似乎不想接受它作为定义。我尝试过:
/**
* @typedef {import('./foo-subclass.d.ts').FooInterface} FooInterface
*/
/**
* @typedef {import('./base').Base & FooInterface} FooClass
*/
/** @type {FooClass} */
const myInstance = new FooSubClass()
但是当我尝试从中访问属性时,我只会得到基类的方法:
myInstance. // < intellisense shows `.copy()`
这似乎也无效:
class FooSubClass extends Base {
/** @returns {FooClass} */ // < shows an error
constructor () {
...
}
}
如何重载VSCode中构造函数返回的类型定义?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。