microsoft / microsoft/TypeScript
Static property access fails in transpiled JS code when referenced in a private method in TypeScript 5.2.2
@rbuckton ci sta già lavorando.
Dal 2/11/2023.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.4k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
🔎 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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Valutazione
Questa issue non è ancora stata valutata.