@@ -10165,11 +10165,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1016510165 return prop ? getTypeOfSymbol(prop) : undefined;
1016610166 }
1016710167
10168- function getTypeOfPropertyOrIndexSignature(type: Type, name: __String, addOptionalityToIndex: boolean): Type {
10169- let propType;
10170- return getTypeOfPropertyOfType(type, name) ||
10171- (propType = getApplicableIndexInfoForName(type, name)?.type) && addOptionality(propType, /*isProperty*/ true, addOptionalityToIndex) ||
10172- unknownType;
10168+ function getTypeOfPropertyOrIndexSignature(type: Type, name: __String): Type {
10169+ return getTypeOfPropertyOfType(type, name) || getApplicableIndexInfoForName(type, name)?.type || unknownType;
1017310170 }
1017410171
1017510172 function isTypeAny(type: Type | undefined) {
@@ -22703,7 +22700,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2270322700 let matched = false;
2270422701 for (let i = 0; i < types.length; i++) {
2270522702 if (include[i]) {
22706- const targetType = getTypeOfPropertyOrIndexSignature (types[i], propertyName, /*addOptionalityToIndex*/ true );
22703+ const targetType = getTypeOfPropertyOrIndexSignatureOfType (types[i], propertyName);
2270722704 if (targetType && related(getDiscriminatingType(), targetType)) {
2270822705 matched = true;
2270922706 }
@@ -22721,6 +22718,13 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2272122718 }
2272222719 const filtered = contains(include, Ternary.False) ? getUnionType(types.filter((_, i) => include[i])) : target;
2272322720 return filtered.flags & TypeFlags.Never ? target : filtered;
22721+
22722+ function getTypeOfPropertyOrIndexSignatureOfType(type: Type, name: __String): Type | undefined {
22723+ let propType;
22724+ return getTypeOfPropertyOfType(type, name) ||
22725+ (propType = getApplicableIndexInfoForName(type, name)?.type) &&
22726+ addOptionality(propType, /*isProperty*/ true, /*isOptional*/ true);
22727+ }
2272422728 }
2272522729
2272622730 /**
@@ -27016,7 +27020,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2701627020 propType = removeNullable && optionalChain ? getOptionalType(propType) : propType;
2701727021 const narrowedPropType = narrowType(propType);
2701827022 return filterType(type, t => {
27019- const discriminantType = getTypeOfPropertyOrIndexSignature(t, propName, /*addOptionalityToIndex*/ false );
27023+ const discriminantType = getTypeOfPropertyOrIndexSignature(t, propName);
2702027024 return !(discriminantType.flags & TypeFlags.Never) && !(narrowedPropType.flags & TypeFlags.Never) && areTypesComparable(narrowedPropType, discriminantType);
2702127025 });
2702227026 }
0 commit comments