Skip to content

Commit b5c12ee

Browse files
committed
move tuple/array handling from resolveMappedTypeMembers to forEachMappedTypePropertyKeyTypeAndIndexSignatureKeyType
1 parent e33988d commit b5c12ee

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/compiler/checker.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13701,6 +13701,14 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1370113701
}
1370213702

1370313703
function forEachMappedTypePropertyKeyTypeAndIndexSignatureKeyType(type: Type, include: TypeFlags, stringsOnly: boolean, cb: (keyType: Type) => void) {
13704+
if (isTupleType(type)) {
13705+
forEachType(getUnionType(getElementTypes(type).map((_, i) => getStringLiteralType("" + i))), cb);
13706+
return;
13707+
}
13708+
if (isArrayType(type)) {
13709+
cb(numberType);
13710+
return;
13711+
}
1370413712
for (const prop of getPropertiesOfType(type)) {
1370513713
cb(getLiteralTypeFromProperty(prop, include));
1370613714
}
@@ -13735,15 +13743,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1373513743
const include = keyofStringsOnly ? TypeFlags.StringLiteral : TypeFlags.StringOrNumberLiteralOrUnique;
1373613744
if (isMappedTypeWithKeyofConstraintDeclaration(type)) {
1373713745
// We have a { [P in keyof T]: X }
13738-
if (isTupleType(modifiersType)) {
13739-
forEachType(getUnionType(getElementTypes(modifiersType).map((_, i) => getStringLiteralType("" + i))), addMemberForKeyType);
13740-
}
13741-
else if (isArrayType(modifiersType)) {
13742-
addMemberForKeyType(numberType);
13743-
}
13744-
else {
13745-
forEachMappedTypePropertyKeyTypeAndIndexSignatureKeyType(modifiersType, include, keyofStringsOnly, addMemberForKeyType);
13746-
}
13746+
forEachMappedTypePropertyKeyTypeAndIndexSignatureKeyType(modifiersType, include, keyofStringsOnly, addMemberForKeyType);
1374713747
}
1374813748
else {
1374913749
forEachType(getLowerBoundOfKeyType(constraintType), addMemberForKeyType);

0 commit comments

Comments
 (0)