static block on unnamed class produces invalid javascript
#60.879 aberto em 30 de dez. de 2024
Métricas do repositório
- Stars
- (48.455 stars)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)
Description
🔎 Search Terms
- class
- invalid
- codegen
- static
🕗 Version & Regression Information
- This changed after version 4.4
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about classes, static members of classes
- I was unable to test this on prior versions because static blocks where introduced in typescript 4.4
⏯ Playground Link
💻 Code
export default class{
static demo:number;
static {
this.demo = 1;
}
}
🙁 Actual behavior
TypeScript produces an invalid output where the code references an undefined default_1
I'm assuming the empty class is meant to be assigned to this.
example output:
var _a;
class {
}
_a = default_1;
(() => {
_a.demo = 1;
})();
export default default_1;
🙂 Expected behavior
I would expect typescript to assign the class to the generated default_1
Additional information about the issue
TypeScript has been exhibiting this behavior since support for static blocks was introduced as far as I can tell, prior to version 4.4.4 in the playground produces a different set of invalid code where it just moves the block outside of the class with no modification.
this still technically happens without the export default but typescript does have a warning.