Skip to content

Commit 88f7f12

Browse files
committed
breaking change
1 parent 47cb9bc commit 88f7f12

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/compiler/checker.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25256,6 +25256,17 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2525625256
inferToTemplateLiteralType(source, target as TemplateLiteralType);
2525725257
}
2525825258
else {
25259+
if (isGenericMappedType(source) && isGenericMappedType(target)) {
25260+
invokeOnce(source, target, (source, target) => {
25261+
// The source and target types are generic types { [P in S]: X } and { [P in T]: Y }, so we infer
25262+
// from S to T and from X to Y.
25263+
inferFromTypes(getConstraintTypeFromMappedType(source), getConstraintTypeFromMappedType(target));
25264+
inferFromTypes(getTemplateTypeFromMappedType(source), getTemplateTypeFromMappedType(target));
25265+
const sourceNameType = getNameTypeFromMappedType(source);
25266+
const targetNameType = getNameTypeFromMappedType(target);
25267+
if (sourceNameType && targetNameType) inferFromTypes(sourceNameType, targetNameType);
25268+
});
25269+
}
2525925270
source = getReducedType(source);
2526025271
if (!(priority & InferencePriority.NoConstraints && source.flags & (TypeFlags.Intersection | TypeFlags.Instantiable))) {
2526125272
const apparentSource = getApparentType(source);

0 commit comments

Comments
 (0)