Я хочу сделать следующее:
class A {
someMethod() {
//
}
}
class B {
constructor (options) {
this.dependency = options.dependency;
}
}
class C extends B {
test() {
this.dependency.a. // want a to refer to instance of A class and provide intellisense using jsdocs
}
}
Я пробовал некоторые вещи на обычных объектах, и это работает, но я не могу заставить его работать с классом или переопределить какое-либо свойство. вот что я попробовал:
/**
* @typedef {Object} WithSomeProp
* @property {{ a: A }} prop
*
* @typedef {C & WithSomeProp} extended
*/
/**
* @type {extended}
*/
let a = {};
a.prop.a.someMethod // works (shows suggestion)
a.test // works
/**
* @typedef {Object} WithOtherProp
* @property {{ a: A }} dependency
*
* @typedef {C & WithOtherProp} extendedTwo
*/
/**
* @type {extendedTwo}
*/
let b = {};
b.dependency. // doesn't work
b.test // works
Таким образом, в целом нет никакого способа переопределить определение свойства как-нибудь позже в расширенных классах для получения поддержки intellisense?