diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7d4bfb43de7..649a591b891 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14295,7 +14295,7 @@ namespace ts { } const { declarations, flags } = exports[id]; // ECMA262: 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) - if (!(flags & (SymbolFlags.Namespace | SymbolFlags.Interface | SymbolFlags.Enum)) && declarations.length > 1) { + if (!(flags & (SymbolFlags.Namespace | SymbolFlags.Interface | SymbolFlags.Enum)) && (flags & SymbolFlags.TypeAlias ? declarations.length - 1 : declarations.length) > 1) { const exportedDeclarations: Declaration[] = filter(declarations, isNotOverload); if (exportedDeclarations.length > 1) { for (const declaration of exportedDeclarations) { diff --git a/tests/baselines/reference/typeAliasExport.js b/tests/baselines/reference/typeAliasExport.js new file mode 100644 index 00000000000..fa864f571ea --- /dev/null +++ b/tests/baselines/reference/typeAliasExport.js @@ -0,0 +1,8 @@ +//// [typeAliasExport.ts] +declare module "a" { + export default 0 + export var a; + export type a = typeof a; +} + +//// [typeAliasExport.js] diff --git a/tests/baselines/reference/typeAliasExport.symbols b/tests/baselines/reference/typeAliasExport.symbols new file mode 100644 index 00000000000..1f580b03011 --- /dev/null +++ b/tests/baselines/reference/typeAliasExport.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/typeAliasExport.ts === +declare module "a" { + export default 0 + export var a; +>a : Symbol(a, Decl(typeAliasExport.ts, 2, 12), Decl(typeAliasExport.ts, 2, 15)) + + export type a = typeof a; +>a : Symbol(a, Decl(typeAliasExport.ts, 2, 12), Decl(typeAliasExport.ts, 2, 15)) +>a : Symbol(a, Decl(typeAliasExport.ts, 2, 12), Decl(typeAliasExport.ts, 2, 15)) +} diff --git a/tests/baselines/reference/typeAliasExport.types b/tests/baselines/reference/typeAliasExport.types new file mode 100644 index 00000000000..afa26073061 --- /dev/null +++ b/tests/baselines/reference/typeAliasExport.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/typeAliasExport.ts === +declare module "a" { + export default 0 + export var a; +>a : any + + export type a = typeof a; +>a : any +>a : any +} diff --git a/tests/cases/compiler/typeAliasExport.ts b/tests/cases/compiler/typeAliasExport.ts new file mode 100644 index 00000000000..706b731f0ab --- /dev/null +++ b/tests/cases/compiler/typeAliasExport.ts @@ -0,0 +1,5 @@ +declare module "a" { + export default 0 + export var a; + export type a = typeof a; +} \ No newline at end of file