diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 204a563f31a..24dcc6afba9 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -21552,10 +21552,12 @@ namespace ts { if (!(type.flags & TypeFlags.Union)) { return mapper(type); } + const origin = (type).origin; + const types = origin && origin.flags & TypeFlags.Union ? (origin).types : (type).types; let mappedTypes: Type[] | undefined; let changed = false; - for (const t of (type).types) { - const mapped = mapper(t); + for (const t of types) { + const mapped = t.flags & TypeFlags.Union ? mapType(t, mapper, noReductions) : mapper(t); changed ||= t !== mapped; if (mapped) { if (!mappedTypes) {