问题描述
我有一个有趣的情况,我试图重载类实例的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 (将#修改为@)