Description
π Search Terms
static property access private method transpiled JS
π Version & Regression Information
- This changed between versions 5.1.6 and 5.2.2 [using Target: ES2022, Module: Node16]
β― Playground Link
π» Code
After updating to TypeScript 5.2.2, I encountered a TypeError when trying to access a static property on the same class. The compiled JavaScript code results in a reference to an uninitialized variable. This error seems to occur when a static member is referenced in a private method in the class.
export class A {
static propA = 'name';
static propB = A.propA;
// ^^^^^ (At runtime) TypeError: Cannot read properties of undefined (reading 'propA')
// Making this method public makes transpiled JavaScript code work as expected
#updateUser() {
return A.propA;
}
}
π Actual behavior
The transpiled JavaScript results in a TypeError due to _a
being used before it is assigned a value. The transpilation output incorrectly references _a
instead of A
in the static property initialization and inside the private method.
var _a;
export class A {
static propA = 'name';
static propB = _a.propA;
// ^^^^^ TypeError: Cannot read properties of undefined (reading 'propA')
#updateUser() {
return _a.propA; // The culprit seems to be this line
}
}
_a = A; // _a is defined too late
π Expected behavior
The static properties should be accessed the same way it does in the TypeScript code, as it is completely correct JavaScript code.
export class A {
static propA = 'name';
static propB = A.propA; // The static member is referenced as expected
#updateUser() {
return A.propA;
}
}
Additional information about the issue
Making the #updateUser
method public makes TypeScript transpile JavaScript code as expected.