diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8ed8df17c68..cfabcd3f5ba 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7047,11 +7047,12 @@ namespace ts { } } if (isGenericMappedType(target)) { - // A type [P in S]: X is related to a type [P in T]: X if T is related to S. - if (isGenericMappedType(source) && - isRelatedTo(getConstraintTypeFromMappedType(target), getConstraintTypeFromMappedType(source), /*reportErrors*/ false) && - isTypeIdenticalTo(getTemplateTypeFromMappedType(source), getTemplateTypeFromMappedType(target))) { - return Ternary.True; + // A type [P in S]: X is related to a type [P in T]: Y if T is related to S and X is related to Y. + if (isGenericMappedType(source)) { + if ((result = isRelatedTo(getConstraintTypeFromMappedType(target), getConstraintTypeFromMappedType(source), reportErrors)) && + (result = isRelatedTo(getTemplateTypeFromMappedType(source), getTemplateTypeFromMappedType(target), reportErrors))) { + return result; + } } } else {