class A<T = number> {
//static { type _<T extends A = A> = 0 }
//^ will work when uncomment it?
value!: T;
child!: InstanceType<typeof A.B<A<T>>>
static B = class B<T extends A = A> {
parent!: T;
}
}
var a = new A
a.child.parent.value
// ^?
π Actual behavior
Shows an error 'child' is referenced directly or indirectly in its own type annotation..
However, when uncommenting // static {...} it will work only in playground.
In VSCode it still shows the error above.
π Expected behavior
a.child.parent.value is number
Workaround
A workaround is remove the default type for class B<T>. The code below works well, also, only in playground. In my VSCode(5.0.0-dev.20230216) it still breaks unfortunately.
class A<T extends number = number> {
value!: T;
child!: InstanceType<typeof A.B<A<T>>>
static B = class B<T extends A> {
parent!: T;
}
}
var a = new A
a.child.parent.value
// ^? number
Bug Report
π Search Terms
instantiation expression nested class
π Version & Regression Information
β― Playground Link
Playground link with relevant code
π» Code
π Actual behavior
Shows an error
'child' is referenced directly or indirectly in its own type annotation.
.However, when uncommenting
// static {...}
it will work only in playground. In VSCode it still shows the error above.π Expected behavior
a.child.parent.value
isnumber
Workaround
A workaround is remove the default type for
class B<T>
. The code below works well, also, only in playground. In my VSCode(5.0.0-dev.20230216) it still breaks unfortunately.