diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 79488b7b546..98a26fb0b33 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8682,7 +8682,7 @@ namespace ts { // type. Otherwise, the types are completely unrelated, so narrow to an intersection of the // two types. const targetType = type.flags & TypeFlags.TypeParameter ? getApparentType(type) : type; - return isTypeSubtypeOf(candidate, targetType) ? candidate : + return isTypeSubtypeOf(candidate, type) ? candidate : isTypeAssignableTo(type, candidate) ? type : isTypeAssignableTo(candidate, targetType) ? candidate : getIntersectionType([type, candidate]);