Skip to content

Commit aa55650

Browse files
committed
Handle when type alias's type parameter extends type that wont get emitted in .d.ts
Fixes #12326
1 parent cbde25f commit aa55650

5 files changed

+27
-0
lines changed

src/compiler/declarationEmitter.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,10 @@ namespace ts {
10371037
diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1;
10381038
break;
10391039

1040+
case SyntaxKind.TypeAliasDeclaration:
1041+
diagnosticMessage = Diagnostics.Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1;
1042+
break;
1043+
10401044
default:
10411045
Debug.fail("This is unknown parent for type parameter: " + node.parent.kind);
10421046
}

src/compiler/diagnosticMessages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2276,6 +2276,10 @@
22762276
"category": "Error",
22772277
"code": 4082
22782278
},
2279+
"Type parameter '{0}' of exported type alias has or is using private name '{1}'.": {
2280+
"category": "Error",
2281+
"code": 4083
2282+
},
22792283
"Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict.": {
22802284
"category": "Message",
22812285
"code": 4090
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
tests/cases/compiler/declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts(2,18): error TS2304: Cannot find name 'Unknown'.
2+
tests/cases/compiler/declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts(2,18): error TS4083: Type parameter 'T' of exported type alias has or is using private name 'Unknown'.
3+
4+
5+
==== tests/cases/compiler/declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts (2 errors) ====
6+
7+
type A<T extends Unknown> = {}
8+
~~~~~~~
9+
!!! error TS2304: Cannot find name 'Unknown'.
10+
~~~~~~~
11+
!!! error TS4083: Type parameter 'T' of exported type alias has or is using private name 'Unknown'.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
//// [declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.ts]
2+
3+
type A<T extends Unknown> = {}
4+
5+
//// [declarationEmitTypeAliasTypeParameterExtendingUnknownSymbol.js]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// @declaration: true
2+
3+
type A<T extends Unknown> = {}

0 commit comments

Comments
 (0)