-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Open
Labels
Fix AvailableA PR has been opened for this issueA PR has been opened for this issueNeeds InvestigationThis issue needs a team member to investigate its status.This issue needs a team member to investigate its status.RescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone
Milestone
Description
Bug Report
π Search Terms
instantiation expression nested class
π Version & Regression Information
- This is the behavior in every version I tried
β― Playground Link
Playground link with relevant code
π» Code
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
// ^? numbernspaeth
Metadata
Metadata
Assignees
Labels
Fix AvailableA PR has been opened for this issueA PR has been opened for this issueNeeds InvestigationThis issue needs a team member to investigate its status.This issue needs a team member to investigate its status.RescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone