diff --git a/crates/swc_ecma_transforms_typescript/src/strip.rs b/crates/swc_ecma_transforms_typescript/src/strip.rs index 322d6920ca0a..79a97c52dcaa 100644 --- a/crates/swc_ecma_transforms_typescript/src/strip.rs +++ b/crates/swc_ecma_transforms_typescript/src/strip.rs @@ -1596,11 +1596,19 @@ where ImportSpecifier::Default(ImportDefaultSpecifier { local, .. }) | ImportSpecifier::Named(ImportNamedSpecifier { local, .. }) | ImportSpecifier::Namespace(ImportStarAsSpecifier { local, .. }) => { + let type_only = n.type_only + || matches!( + s, + ImportSpecifier::Named(ImportNamedSpecifier { + is_type_only: true, + .. + }) + ); self.scope .referenced_idents .entry((local.sym.clone(), local.span.ctxt())) .or_default(); - if n.type_only { + if type_only { self.scope.decls.entry(local.to_id()).or_default(); } } diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-6598/input.ts b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-6598/input.ts new file mode 100644 index 000000000000..f56f628fb651 --- /dev/null +++ b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-6598/input.ts @@ -0,0 +1,2 @@ +import { type BadgeProps } from './badge.js'; +export { BadgeProps }; \ No newline at end of file diff --git a/crates/swc_ecma_transforms_typescript/tests/fixture/issue-6598/output.js b/crates/swc_ecma_transforms_typescript/tests/fixture/issue-6598/output.js new file mode 100644 index 000000000000..e69de29bb2d1