@@ -534,17 +534,19 @@ namespace ts.codefix {
534
534
else if ( usageContext . properties && hasCallContext ( usageContext . properties . get ( "push" as __String ) ) ) {
535
535
return checker . createArrayType ( getParameterTypeFromCallContexts ( 0 , usageContext . properties . get ( "push" as __String ) ! . callContexts ! , /*isRestParameter*/ false , checker ) ! ) ;
536
536
}
537
- else if ( usageContext . properties || usageContext . callContexts || usageContext . constructContexts || usageContext . numberIndexContext || usageContext . stringIndexContext ) {
537
+ else if ( usageContext . numberIndexContext ) {
538
+ return checker . createArrayType ( recur ( usageContext . numberIndexContext ) ) ;
539
+ }
540
+ else if ( usageContext . properties || usageContext . callContexts || usageContext . constructContexts || usageContext . stringIndexContext ) {
538
541
const members = createUnderscoreEscapedMap < Symbol > ( ) ;
539
542
const callSignatures : Signature [ ] = [ ] ;
540
543
const constructSignatures : Signature [ ] = [ ] ;
541
544
let stringIndexInfo : IndexInfo | undefined ;
542
- let numberIndexInfo : IndexInfo | undefined ;
543
545
544
546
if ( usageContext . properties ) {
545
547
usageContext . properties . forEach ( ( context , name ) => {
546
548
const symbol = checker . createSymbol ( SymbolFlags . Property , name ) ;
547
- symbol . type = getTypeFromUsageContext ( context , checker ) || checker . getAnyType ( ) ;
549
+ symbol . type = recur ( context ) ;
548
550
members . set ( name , symbol ) ;
549
551
} ) ;
550
552
}
@@ -561,19 +563,19 @@ namespace ts.codefix {
561
563
}
562
564
}
563
565
564
- if ( usageContext . numberIndexContext ) {
565
- numberIndexInfo = checker . createIndexInfo ( getTypeFromUsageContext ( usageContext . numberIndexContext , checker ) || checker . getAnyType ( ) , /*isReadonly*/ false ) ;
566
- }
567
-
568
566
if ( usageContext . stringIndexContext ) {
569
- stringIndexInfo = checker . createIndexInfo ( getTypeFromUsageContext ( usageContext . stringIndexContext , checker ) || checker . getAnyType ( ) , /*isReadonly*/ false ) ;
567
+ stringIndexInfo = checker . createIndexInfo ( recur ( usageContext . stringIndexContext ) , /*isReadonly*/ false ) ;
570
568
}
571
569
572
- return checker . createAnonymousType ( /*symbol*/ undefined ! , members , callSignatures , constructSignatures , stringIndexInfo , numberIndexInfo ) ; // TODO: GH#18217
570
+ return checker . createAnonymousType ( /*symbol*/ undefined ! , members , callSignatures , constructSignatures , stringIndexInfo , /* numberIndexInfo*/ undefined ) ; // TODO: GH#18217
573
571
}
574
572
else {
575
573
return undefined ;
576
574
}
575
+
576
+ function recur ( innerContext : UsageContext ) : Type {
577
+ return getTypeFromUsageContext ( innerContext , checker ) || checker . getAnyType ( ) ;
578
+ }
577
579
}
578
580
579
581
function getParameterTypeFromCallContexts ( parameterIndex : number , callContexts : CallContext [ ] , isRestParameter : boolean , checker : TypeChecker ) {
0 commit comments