27 lines
577 B
TypeScript
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'.
|
||
|
}
|