TypeScript/tests/cases/compiler/doesNotNarrowUnionOfConstructorsWithInstanceof.ts
Orta Therox 6ebd73c84f
Don't narrow against unions of constructor functions with instanceof (#38099)
* WIP

* Only narrows when the union is not all constructors
2020-07-07 11:34:10 -04:00

27 lines
577 B
TypeScript

class A {
length: 1
constructor() {
this.length = 1
}
}
class B {
length: 2
constructor() {
this.length = 2
}
}
function getTypedArray(flag: boolean) {
return flag ? new A() : new B();
}
function getTypedArrayConstructor(flag: boolean) {
return flag ? A : B;
}
const a = getTypedArray(true); // A | B
const b = getTypedArrayConstructor(false); // A constructor | B constructor
if (!(a instanceof b)) {
console.log(a.length); // Used to be property 'length' does not exist on type 'never'.
}