2020-03-11 21:16:33 +01:00
|
|
|
// Typical case
|
|
|
|
class C1 {
|
|
|
|
property1: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
let var1: C1 | number;
|
|
|
|
if (var1.constructor == C1) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (var1["constructor"] == C1) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (var1.constructor === C1) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (var1["constructor"] === C1) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (C1 == var1.constructor) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (C1 == var1["constructor"]) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (C1 === var1.constructor) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
if (C1 === var1["constructor"]) {
|
|
|
|
var1; // C1
|
|
|
|
var1.property1; // string
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // number | C1
|
|
|
|
}
|
|
|
|
|
|
|
|
if (var1.constructor != C1) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (var1["constructor"] != C1) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (var1.constructor !== C1) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (var1["constructor"] !== C1) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (C1 != var1.constructor) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (C1 != var1["constructor"]) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (C1 !== var1.constructor) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
|
|
|
if (C1 !== var1["constructor"]) {
|
|
|
|
var1; // C1 | number
|
|
|
|
var1.property1; // error
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var1; // C1
|
|
|
|
}
|
2020-03-31 04:31:16 +02:00
|
|
|
|
|
|
|
// Repro from #37660
|
|
|
|
|
|
|
|
function foo(instance: Function | object) {
|
|
|
|
if (typeof instance === 'function') {
|
|
|
|
if (instance.prototype == null || instance.prototype.constructor == null) {
|
|
|
|
return instance.length;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|