diff --git a/packages/babel-plugin-transform-typescript/src/index.ts b/packages/babel-plugin-transform-typescript/src/index.ts index 1696f8e9f780..3662ad8252c0 100644 --- a/packages/babel-plugin-transform-typescript/src/index.ts +++ b/packages/babel-plugin-transform-typescript/src/index.ts @@ -13,13 +13,19 @@ import transpileNamespace from "./namespace"; function isInType(path: NodePath) { switch (path.parent.type) { case "TSTypeReference": - case "TSQualifiedName": case "TSExpressionWithTypeArguments": case "TSTypeQuery": return true; + case "TSQualifiedName": + return ( + // `import foo = ns.bar` is transformed to `var foo = ns.bar` and should not be removed + path.parentPath.findParent(path => path.type !== "TSQualifiedName") + .type !== "TSImportEqualsDeclaration" + ); case "ExportSpecifier": return ( - (path.parentPath.parent as t.ExportNamedDeclaration).exportKind === + // @ts-expect-error: DeclareExportDeclaration does not have `exportKind` + (path.parentPath as NodePath).parent.exportKind === "type" ); default: diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/input.ts new file mode 100644 index 000000000000..f4da1ee0208d --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/input.ts @@ -0,0 +1,5 @@ +import nsa from "./module-a"; +import foo = nsa.bar; + +import nsb from "./module-b"; +import bar = nsb.foo.bar; diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/options.json new file mode 100644 index 000000000000..5c79172a6082 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-typescript"] +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/output.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/output.mjs new file mode 100644 index 000000000000..b47cdaf84293 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/elide-type-referenced-in-imports-equal-no/output.mjs @@ -0,0 +1,4 @@ +import nsa from "./module-a"; +var foo = nsa.bar; +import nsb from "./module-b"; +var bar = nsb.foo.bar;