Repository: swc-project/swc (rust)

Issue:
unexpected remove super class type
### Describe the bug

I use `parse` and `compiler.print`. All type remains but the super class type disappear.

### Input code

```typescript
import { InputProps } from 'antd';
type Props = InputProps;
class Page extends React.Component<Props,any> {
    render() {}
}
```


### Config

see Additional context.


### Playground link

no

### Expected behavior

```ts
import { InputProps } from 'antd';
type Props = InputProps;
class Page extends React.Component<Props,any> {
    render() {}
}
```

### Actual behavior

```ts
import { InputProps } from 'antd';
type Props = InputProps;
class Page extends React.Component {
    render() {}
}
```

### Version

swc = "0.212.1" swc_common = "0.26.0" swc_ecma_parser = "0.116.0"

### Additional context

```rust
pub fn main() {
    let cm: Lrc<SourceMap> = Default::default();
    let fm = cm.new_source_file(
        FileName::Custom("test.ts".to_string()),
        "
    import { InputProps } from 'antd';
    type Props = InputProps;
    class Page extends React.Component<Props,any> {
        render() {}
    }"
        .to_string(),
    );

    let lexer = Lexer::new(
        Syntax::Typescript(TsConfig {
            tsx: true,
            decorators: true,
            dts: false,
            no_early_errors: false,
        }),
        EsVersion::Es2020,
        StringInput::from(&*fm),
        None,
    );

    let mut parser = Parser::new_from(lexer);
    let module = parser.parse_module().unwrap();

    let compiler = Compiler::new(cm);

    let code = compiler.print(
        &module,
        None,
        None,
        false,
        EsVersion::Es2020,
        SourceMapsConfig::Bool(false),
        &Default::default(),
        None,
        false,
        None,
        false,
        false,
    );

    println!("{}", code.unwrap().code);
}
```

Pull request description:
fix(es/codegen): Emit class super type params
<!-- Note: CI script will automatically rebase your PR so please do not rebase unless required -->

<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. -->

**Description:**

<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->

**BREAKING CHANGE:**

<!--
If this PR introduces a breaking change, it must contain a notice for it to be included in the CHANGELOG. Add description or remove entirely if not breaking.

You may need to update `MIGRATION.md` for the breaking changes.
-->

**Related issue (if exists):**
- fix #5328 

Patch:
diff --git a/crates/swc_ecma_codegen/src/lib.rs b/crates/swc_ecma_codegen/src/lib.rs
index 5ce2a2b1b9..ab926c0a9e 100644
--- a/crates/swc_ecma_codegen/src/lib.rs
+++ b/crates/swc_ecma_codegen/src/lib.rs
@@ -1231,6 +1231,7 @@ where
                 }
             }
             emit!(node.super_class);
+            emit!(node.super_type_params);
         }
 
         formatting_space!();


Test patch:
diff --git a/crates/swc_ecma_codegen/tests/fixture/issues/5328/input.ts b/crates/swc_ecma_codegen/tests/fixture/issues/5328/input.ts
new file mode 100644
index 0000000000..5d6e4f7cf8
--- /dev/null
+++ b/crates/swc_ecma_codegen/tests/fixture/issues/5328/input.ts
@@ -0,0 +1,3 @@
+class Page extends React.Component<Props, any> {
+    render() {}
+}
diff --git a/crates/swc_ecma_codegen/tests/fixture/issues/5328/output.ts b/crates/swc_ecma_codegen/tests/fixture/issues/5328/output.ts
new file mode 100644
index 0000000000..5d6e4f7cf8
--- /dev/null
+++ b/crates/swc_ecma_codegen/tests/fixture/issues/5328/output.ts
@@ -0,0 +1,3 @@
+class Page extends React.Component<Props, any> {
+    render() {}
+}
diff --git a/crates/swc_ecma_transforms_base/tests/ts-resolver/ts_resolver_import_and_extends/output.ts b/crates/swc_ecma_transforms_base/tests/ts-resolver/ts_resolver_import_and_extends/output.ts
index 372347f774..7337e1782c 100644
--- a/crates/swc_ecma_transforms_base/tests/ts-resolver/ts_resolver_import_and_extends/output.ts
+++ b/crates/swc_ecma_transforms_base/tests/ts-resolver/ts_resolver_import_and_extends/output.ts
@@ -1,5 +1,6 @@
 import { Nullable__1 } from "nullable";
 import { Component__1 } from "react";
-class Foo__1 extends Component__1 {
+class Foo__1 extends Component__1<Nullable__1, {
+}> {
 }
 new Foo__1();