diff --git a/crates/oxc_transformer/src/typescript/annotations.rs b/crates/oxc_transformer/src/typescript/annotations.rs index 395c2c66d91a5..bc5f0340e9f94 100644 --- a/crates/oxc_transformer/src/typescript/annotations.rs +++ b/crates/oxc_transformer/src/typescript/annotations.rs @@ -241,7 +241,7 @@ impl<'a> TypeScriptAnnotations<'a> { // for each of them in the constructor body. if def.kind == MethodDefinitionKind::Constructor { for param in def.value.params.items.as_mut_slice() { - if param.accessibility.is_some() { + if param.accessibility.is_some() || param.readonly || param.r#override { if let Some(id) = param.pattern.get_binding_identifier() { self.assignments.push(Assignment { span: id.span, diff --git a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts index 424495ed14f94..cfd9d2d3bd2e4 100644 --- a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts +++ b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts @@ -1,5 +1,11 @@ class Foo { - constructor(public foo, private bar, protected zoo, too) { + boom: number; + constructor(public foo, private bar, protected zoo, readonly bang, too) { } -} \ No newline at end of file +} +class Bar extends Foo { + constructor(public foo, private bar, protected zoo, readonly bang, override boom, too) { + super(foo, bar, zoo, bang, too); + } +} diff --git a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js index 6a5e5ee852eb3..8e2e8130f30b5 100644 --- a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js +++ b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js @@ -1,7 +1,19 @@ class Foo { - constructor(foo, bar, zoo, too) { - this.foo = foo; - this.bar = bar; - this.zoo = zoo; + boom; + constructor(foo, bar, zoo, bang, too) { + this.foo = foo; + this.bar = bar; + this.zoo = zoo; + this.bang = bang; } -} \ No newline at end of file +} +class Bar extends Foo { + constructor(foo, bar, zoo, bang, boom, too) { + super(foo, bar, zoo, bang, too); + this.foo = foo; + this.bar = bar; + this.zoo = zoo; + this.bang = bang; + this.boom = boom; + } +}