diff --git a/packages/babel-plugin-transform-typescript/src/namespace.ts b/packages/babel-plugin-transform-typescript/src/namespace.ts index 74532eca9412..54ceaf940b2b 100644 --- a/packages/babel-plugin-transform-typescript/src/namespace.ts +++ b/packages/babel-plugin-transform-typescript/src/namespace.ts @@ -185,6 +185,13 @@ function handleNested( case "TSEnumDeclaration": case "FunctionDeclaration": case "ClassDeclaration": { + if ( + subNode.declaration.type === "ClassDeclaration" && + subNode.declaration.declare + ) { + continue; + } + const itemName = subNode.declaration.id.name; names.add(itemName); namespaceTopLevel.splice( diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-class/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-class/input.ts new file mode 100644 index 000000000000..ab6316e99249 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-class/input.ts @@ -0,0 +1,4 @@ +export namespace A { + export declare class B { + } +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-class/output.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-class/output.mjs new file mode 100644 index 000000000000..d4cc47055d31 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/namespace/declare-class/output.mjs @@ -0,0 +1,3 @@ +export let A; + +(function (_A) {})(A || (A = {}));