TypeScript/tests/cases/compiler/doesNotNarrowUnionOfConstructorsWithInstanceof.ts

27 lines
577 B
TypeScript
Raw Normal View History

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'.
}