Open
Description
π Search Terms
used before its initialization
π Version & Regression Information
- This changed between versions 4.2.3 and 4.3.5
- This changed in commit or PR Disabled 'used before initialization' error for optional propertiesΒ #43100 (
0967f3b
)
β― Playground Link
π» Code
class C {
a = this.b;
b?: number = 123;
}
class D {
a: number | undefined;
b = this.a = 123;
}
π Actual behavior
When initializing C.a
: no error.
When initializing D.b
:
Property 'a' is used before its initialization. (2729)
π Expected behavior
When initializing C.a
:
Property 'b' is used before its initialization. (2729)
When initializing D.b
: no error.
Additional information about the issue
Tried with both useDefineForClassFields
set to true
and false
.
The behavior is as expected when switching the use of undefined
and the "optional" ?
modifier like this:
class C {
a = this.b;
b: number | undefined = 123;
}
class D {
a?: number;
b = this.a = 123;
}
#43100 seems to have taken a wrong approach. Instead of basing the decision to report an error on whether the ?
modifier is present, it should be based on whether the property access is on the left-hand side of an assignment expression.