=== tests/cases/compiler/declFileTypeAnnotationUnionType.ts === class c { >c : c private p: string; >p : string } module m { >m : typeof m export class c { >c : c private q: string; >q : string } export class g { >g : g >T : T private r: string; >r : string } } class g { >g : g >T : T private s: string; >s : string } // Just the name var k: c | m.c = new c() || new m.c(); >k : c | m.c >c : c >m : any >c : m.c >new c() || new m.c() : c | m.c >new c() : c >c : typeof c >new m.c() : m.c >m.c : typeof m.c >m : typeof m >c : typeof m.c var l = new c() || new m.c(); >l : c | m.c >new c() || new m.c() : c | m.c >new c() : c >c : typeof c >new m.c() : m.c >m.c : typeof m.c >m : typeof m >c : typeof m.c var x: g | m.g | (() => c) = new g() || new m.g() || (() => new c()); >x : g | m.g | (() => c) >g : g >m : any >g : m.g >c : c >new g() || new m.g() || (() => new c()) : g | m.g | (() => c) >new g() || new m.g() : g | m.g >new g() : g >g : typeof g >new m.g() : m.g >m.g : typeof m.g >m : typeof m >g : typeof m.g >(() => new c()) : () => c >() => new c() : () => c >new c() : c >c : typeof c var y = new g() || new m.g() || (() => new c()); >y : g | m.g | (() => c) >new g() || new m.g() || (() => new c()) : g | m.g | (() => c) >new g() || new m.g() : g | m.g >new g() : g >g : typeof g >new m.g() : m.g >m.g : typeof m.g >m : typeof m >g : typeof m.g >(() => new c()) : () => c >() => new c() : () => c >new c() : c >c : typeof c