@@ -14127,7 +14127,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1412714127 cb(getLiteralTypeFromProperty(prop, include));
1412814128 }
1412914129 if (type.flags & TypeFlags.Any) {
14130- cb( stringType);
14130+ forEachType(stringsOnly ? stringType : stringNumberSymbolType, cb );
1413114131 }
1413214132 else {
1413314133 for (const info of getIndexInfosOfType(type)) {
@@ -14166,7 +14166,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1416614166
1416714167 function addMemberForKeyType(keyType: Type) {
1416814168 const propNameType = nameType ? instantiateType(nameType, appendTypeMapping(type.mapper, typeParameter, keyType)) : keyType;
14169- forEachType(propNameType, t => addMemberForKeyTypeWorker(keyType, t));
14169+ forEachType(keyType.flags & TypeFlags.Any ? stringNumberSymbolType : propNameType, t => addMemberForKeyTypeWorker(keyType, t));
1417014170 }
1417114171
1417214172 function addMemberForKeyTypeWorker(keyType: Type, propNameType: Type) {
@@ -14201,10 +14201,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1420114201 members.set(propName, prop);
1420214202 }
1420314203 }
14204- else if (isValidIndexKeyType(propNameType) || propNameType.flags & (TypeFlags.Any | TypeFlags.Enum)) {
14205- const indexKeyType = propNameType.flags & (TypeFlags.Any | TypeFlags.String) ? stringType :
14206- propNameType.flags & (TypeFlags.Number | TypeFlags.Enum) ? numberType :
14207- propNameType;
14204+ else if (isValidIndexKeyType(propNameType) || propNameType.flags & TypeFlags.Enum) {
14205+ const indexKeyType = propNameType.flags & (TypeFlags.Number | TypeFlags.Enum) ? numberType : propNameType;
1420814206 const propType = instantiateType(templateType, appendTypeMapping(type.mapper, typeParameter, keyType));
1420914207 const modifiersIndexInfo = getApplicableIndexInfo(modifiersType, propNameType);
1421014208 const isReadonly = !!(templateModifiers & MappedTypeModifiers.IncludeReadonly ||
0 commit comments