@@ -1009,7 +1009,7 @@ const thisConverter: TypeConverter<ts.ThisTypeNode> = {
1009
1009
} ,
1010
1010
} ;
1011
1011
1012
- const tupleConverter : TypeConverter < ts . TupleTypeNode , ts . TupleTypeReference > = {
1012
+ const tupleConverter = {
1013
1013
kind : [ ts . SyntaxKind . TupleType ] ,
1014
1014
convert ( context , node ) {
1015
1015
const elements = node . elements . map ( ( node ) => convertType ( context , node ) ) ;
@@ -1061,7 +1061,7 @@ const tupleConverter: TypeConverter<ts.TupleTypeNode, ts.TupleTypeReference> = {
1061
1061
1062
1062
return new TupleType ( elements ?? [ ] ) ;
1063
1063
} ,
1064
- } ;
1064
+ } satisfies TypeConverter < ts . TupleTypeNode , ts . TupleTypeReference > ;
1065
1065
1066
1066
const supportedOperatorNames = {
1067
1067
[ ts . SyntaxKind . KeyOfKeyword ] : "keyof" ,
@@ -1265,6 +1265,12 @@ function convertTypeInlined(context: Context, type: ts.Type): SomeType {
1265
1265
const elementType = convertType ( context , context . checker . getTypeArguments ( type as ts . TypeReference ) [ 0 ] ) ;
1266
1266
return new ArrayType ( elementType ) ;
1267
1267
}
1268
+ if ( isTypeReference ( type ) && context . checker . isTupleType ( type ) ) {
1269
+ const tupleNode = context . checker . typeToTypeNode ( type . target , void 0 , ts . NodeBuilderFlags . IgnoreErrors ) ! ;
1270
+ if ( ts . isTupleTypeNode ( tupleNode ) ) {
1271
+ return tupleConverter . convertType ( context , type as ts . TupleTypeReference , tupleNode ) ;
1272
+ }
1273
+ }
1268
1274
1269
1275
return typeLiteralConverter . convertType (
1270
1276
context ,
0 commit comments