diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 529be375616..4bde97af3e7 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2927,6 +2927,10 @@ "category": "Error", "code": 4102 }, + "Type parameter '{0}' of exported mapped object type is using private name '{1}'.": { + "category": "Error", + "code": 4103 + }, "The current host does not support the '{0}' option.": { "category": "Error", diff --git a/src/compiler/transformers/declarations/diagnostics.ts b/src/compiler/transformers/declarations/diagnostics.ts index 9a9aed99e47..33465799c29 100644 --- a/src/compiler/transformers/declarations/diagnostics.ts +++ b/src/compiler/transformers/declarations/diagnostics.ts @@ -391,6 +391,10 @@ namespace ts { diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; + case SyntaxKind.MappedType: + diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1; + break; + case SyntaxKind.ConstructorType: case SyntaxKind.ConstructSignature: diagnosticMessage = Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1; diff --git a/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.errors.txt b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.errors.txt new file mode 100644 index 00000000000..cb7c4f760ad --- /dev/null +++ b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.errors.txt @@ -0,0 +1,15 @@ +/FromFactor.ts(2,15): error TS2304: Cannot find name 'StringKeyOf'. +/FromFactor.ts(2,15): error TS4103: Type parameter 'TName' of exported mapped object type is using private name 'StringKeyOf'. + + +==== /Helpers.ts (0 errors) ==== + export type StringKeyOf = Extract; + +==== /FromFactor.ts (2 errors) ==== + export type RowToColumns = { + [TName in StringKeyOf]: any; + ~~~~~~~~~~~ +!!! error TS2304: Cannot find name 'StringKeyOf'. + ~~~~~~~~~~~ +!!! error TS4103: Type parameter 'TName' of exported mapped object type is using private name 'StringKeyOf'. + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.js b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.js new file mode 100644 index 00000000000..79debe1b4b8 --- /dev/null +++ b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/declarationEmitMappedPrivateTypeTypeParameter.ts] //// + +//// [Helpers.ts] +export type StringKeyOf = Extract; + +//// [FromFactor.ts] +export type RowToColumns = { + [TName in StringKeyOf]: any; +} + +//// [Helpers.js] +"use strict"; +exports.__esModule = true; +//// [FromFactor.js] +"use strict"; +exports.__esModule = true; + + +//// [Helpers.d.ts] +export declare type StringKeyOf = Extract; diff --git a/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.symbols b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.symbols new file mode 100644 index 00000000000..073e34762cd --- /dev/null +++ b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.symbols @@ -0,0 +1,16 @@ +=== /Helpers.ts === +export type StringKeyOf = Extract; +>StringKeyOf : Symbol(StringKeyOf, Decl(Helpers.ts, 0, 0)) +>TObj : Symbol(TObj, Decl(Helpers.ts, 0, 24)) +>Extract : Symbol(Extract, Decl(lib.es5.d.ts, --, --)) +>TObj : Symbol(TObj, Decl(Helpers.ts, 0, 24)) + +=== /FromFactor.ts === +export type RowToColumns = { +>RowToColumns : Symbol(RowToColumns, Decl(FromFactor.ts, 0, 0)) +>TColumns : Symbol(TColumns, Decl(FromFactor.ts, 0, 25)) + + [TName in StringKeyOf]: any; +>TName : Symbol(TName, Decl(FromFactor.ts, 1, 5)) +>TColumns : Symbol(TColumns, Decl(FromFactor.ts, 0, 25)) +} diff --git a/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.types b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.types new file mode 100644 index 00000000000..142549c4d01 --- /dev/null +++ b/tests/baselines/reference/declarationEmitMappedPrivateTypeTypeParameter.types @@ -0,0 +1,10 @@ +=== /Helpers.ts === +export type StringKeyOf = Extract; +>StringKeyOf : Extract + +=== /FromFactor.ts === +export type RowToColumns = { +>RowToColumns : RowToColumns + + [TName in StringKeyOf]: any; +} diff --git a/tests/cases/compiler/declarationEmitMappedPrivateTypeTypeParameter.ts b/tests/cases/compiler/declarationEmitMappedPrivateTypeTypeParameter.ts new file mode 100644 index 00000000000..b65480ea89b --- /dev/null +++ b/tests/cases/compiler/declarationEmitMappedPrivateTypeTypeParameter.ts @@ -0,0 +1,8 @@ +// @declaration: true +// @filename: /Helpers.ts +export type StringKeyOf = Extract; + +// @filename: /FromFactor.ts +export type RowToColumns = { + [TName in StringKeyOf]: any; +} \ No newline at end of file