diff --git a/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts b/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts new file mode 100644 index 00000000000..13cc8da68c9 --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts @@ -0,0 +1,36 @@ +// @strict: true + +// Repro from #20138 + +class C { } + +function f1(v: T | string): void { + if (v instanceof C) { + const x: T = v; + } + else { + const s: string = v; + } +} + +class D { } + +function f2(v: T | U) { + if (v instanceof C) { + const x: T = v; + } + else { + const y: U = v; + } +} + +class E { x: string } + +function f3(v: T | { x: string }) { + if (v instanceof E) { + const x: T = v; + } + else { + const y: { x: string } = v; + } +}