=== tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorConditionIsObjectType.ts === //Cond ? Expr1 : Expr2, Cond is of object type, Expr1 and Expr2 have the same type var condObject: Object; >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) var exprAny1: any; >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) var exprBoolean1: boolean; >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) var exprNumber1: number; >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) var exprString1: string; >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) var exprIsObject1: Object; >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) var exprAny2: any; >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) var exprBoolean2: boolean; >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) var exprNumber2: number; >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) var exprString2: string; >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) var exprIsObject2: Object; >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) function foo() { }; >foo : () => void, Symbol(foo, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 26)) class C { static doIt: () => void }; >C : C, Symbol(C, Decl(conditionalOperatorConditionIsObjectType.ts, 15, 19)) >doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) //Cond is an object type variable condObject ? exprAny1 : exprAny2; >condObject ? exprAny1 : exprAny2 : any >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) condObject ? exprBoolean1 : exprBoolean2; >condObject ? exprBoolean1 : exprBoolean2 : boolean >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) condObject ? exprNumber1 : exprNumber2; >condObject ? exprNumber1 : exprNumber2 : number >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) condObject ? exprString1 : exprString2; >condObject ? exprString1 : exprString2 : string >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) condObject ? exprIsObject1 : exprIsObject2; >condObject ? exprIsObject1 : exprIsObject2 : Object >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) condObject ? exprString1 : exprBoolean1; // union >condObject ? exprString1 : exprBoolean1 : string | boolean >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) //Cond is an object type literal ((a: string) => a.length) ? exprAny1 : exprAny2; >((a: string) => a.length) ? exprAny1 : exprAny2 : any >((a: string) => a.length) : (a: string) => number >(a: string) => a.length : (a: string) => number >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 27, 2)) >a.length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 27, 2)) >length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) ((a: string) => a.length) ? exprBoolean1 : exprBoolean2; >((a: string) => a.length) ? exprBoolean1 : exprBoolean2 : boolean >((a: string) => a.length) : (a: string) => number >(a: string) => a.length : (a: string) => number >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 28, 2)) >a.length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 28, 2)) >length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) ({}) ? exprNumber1 : exprNumber2; >({}) ? exprNumber1 : exprNumber2 : number >({}) : {} >{} : {} >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) ({ a: 1, b: "s" }) ? exprString1 : exprString2; >({ a: 1, b: "s" }) ? exprString1 : exprString2 : string >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 30, 2)) >1 : number >b : string, Symbol(b, Decl(conditionalOperatorConditionIsObjectType.ts, 30, 8)) >"s" : string >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2; >({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2 : Object >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 31, 2)) >1 : number >b : string, Symbol(b, Decl(conditionalOperatorConditionIsObjectType.ts, 31, 8)) >"s" : string >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) ({ a: 1, b: "s" }) ? exprString1: exprBoolean1; // union >({ a: 1, b: "s" }) ? exprString1: exprBoolean1 : string | boolean >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 32, 2)) >1 : number >b : string, Symbol(b, Decl(conditionalOperatorConditionIsObjectType.ts, 32, 8)) >"s" : string >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) //Cond is an object type expression foo() ? exprAny1 : exprAny2; >foo() ? exprAny1 : exprAny2 : any >foo() : void >foo : () => void, Symbol(foo, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 26)) >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) new Date() ? exprBoolean1 : exprBoolean2; >new Date() ? exprBoolean1 : exprBoolean2 : boolean >new Date() : Date >Date : DateConstructor, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) new C() ? exprNumber1 : exprNumber2; >new C() ? exprNumber1 : exprNumber2 : number >new C() : C >C : typeof C, Symbol(C, Decl(conditionalOperatorConditionIsObjectType.ts, 15, 19)) >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) C.doIt() ? exprString1 : exprString2; >C.doIt() ? exprString1 : exprString2 : string >C.doIt() : void >C.doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) >C : typeof C, Symbol(C, Decl(conditionalOperatorConditionIsObjectType.ts, 15, 19)) >doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) condObject.valueOf() ? exprIsObject1 : exprIsObject2; >condObject.valueOf() ? exprIsObject1 : exprIsObject2 : Object >condObject.valueOf() : Object >condObject.valueOf : () => Object, Symbol(Object.valueOf, Decl(lib.d.ts, 102, 29)) >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >valueOf : () => Object, Symbol(Object.valueOf, Decl(lib.d.ts, 102, 29)) >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) new Date() ? exprString1 : exprBoolean1; // union >new Date() ? exprString1 : exprBoolean1 : string | boolean >new Date() : Date >Date : DateConstructor, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) //Results shoud be same as Expr1 and Expr2 var resultIsAny1 = condObject ? exprAny1 : exprAny2; >resultIsAny1 : any, Symbol(resultIsAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 43, 3)) >condObject ? exprAny1 : exprAny2 : any >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) var resultIsBoolean1 = condObject ? exprBoolean1 : exprBoolean2; >resultIsBoolean1 : boolean, Symbol(resultIsBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 44, 3)) >condObject ? exprBoolean1 : exprBoolean2 : boolean >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) var resultIsNumber1 = condObject ? exprNumber1 : exprNumber2; >resultIsNumber1 : number, Symbol(resultIsNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 45, 3)) >condObject ? exprNumber1 : exprNumber2 : number >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) var resultIsString1 = condObject ? exprString1 : exprString2; >resultIsString1 : string, Symbol(resultIsString1, Decl(conditionalOperatorConditionIsObjectType.ts, 46, 3)) >condObject ? exprString1 : exprString2 : string >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) var resultIsObject1 = condObject ? exprIsObject1 : exprIsObject2; >resultIsObject1 : Object, Symbol(resultIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 47, 3)) >condObject ? exprIsObject1 : exprIsObject2 : Object >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) var resultIsStringOrBoolean1 = condObject ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean1 : string | boolean, Symbol(resultIsStringOrBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 48, 3)) >condObject ? exprString1 : exprBoolean1 : string | boolean >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) var resultIsAny2 = ((a: string) => a.length) ? exprAny1 : exprAny2; >resultIsAny2 : any, Symbol(resultIsAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 50, 3)) >((a: string) => a.length) ? exprAny1 : exprAny2 : any >((a: string) => a.length) : (a: string) => number >(a: string) => a.length : (a: string) => number >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 50, 21)) >a.length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 50, 21)) >length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) var resultIsBoolean2 = ((a: string) => a.length) ? exprBoolean1 : exprBoolean2; >resultIsBoolean2 : boolean, Symbol(resultIsBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 51, 3)) >((a: string) => a.length) ? exprBoolean1 : exprBoolean2 : boolean >((a: string) => a.length) : (a: string) => number >(a: string) => a.length : (a: string) => number >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 51, 25)) >a.length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >a : string, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 51, 25)) >length : number, Symbol(String.length, Decl(lib.d.ts, 414, 19)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) var resultIsNumber2 = ({}) ? exprNumber1 : exprNumber2; >resultIsNumber2 : number, Symbol(resultIsNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 52, 3)) >({}) ? exprNumber1 : exprNumber2 : number >({}) : {} >{} : {} >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) var resultIsString2 = ({ a: 1, b: "s" }) ? exprString1 : exprString2; >resultIsString2 : string, Symbol(resultIsString2, Decl(conditionalOperatorConditionIsObjectType.ts, 53, 3)) >({ a: 1, b: "s" }) ? exprString1 : exprString2 : string >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 53, 24)) >1 : number >b : string, Symbol(b, Decl(conditionalOperatorConditionIsObjectType.ts, 53, 30)) >"s" : string >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) var resultIsObject2 = ({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2; >resultIsObject2 : Object, Symbol(resultIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 54, 3)) >({ a: 1, b: "s" }) ? exprIsObject1 : exprIsObject2 : Object >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 54, 24)) >1 : number >b : string, Symbol(b, Decl(conditionalOperatorConditionIsObjectType.ts, 54, 30)) >"s" : string >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) var resultIsStringOrBoolean2 = ({ a: 1, b: "s" }) ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean2 : string | boolean, Symbol(resultIsStringOrBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 55, 3)) >({ a: 1, b: "s" }) ? exprString1 : exprBoolean1 : string | boolean >({ a: 1, b: "s" }) : { a: number; b: string; } >{ a: 1, b: "s" } : { a: number; b: string; } >a : number, Symbol(a, Decl(conditionalOperatorConditionIsObjectType.ts, 55, 33)) >1 : number >b : string, Symbol(b, Decl(conditionalOperatorConditionIsObjectType.ts, 55, 39)) >"s" : string >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) var resultIsAny3 = foo() ? exprAny1 : exprAny2; >resultIsAny3 : any, Symbol(resultIsAny3, Decl(conditionalOperatorConditionIsObjectType.ts, 57, 3)) >foo() ? exprAny1 : exprAny2 : any >foo() : void >foo : () => void, Symbol(foo, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 26)) >exprAny1 : any, Symbol(exprAny1, Decl(conditionalOperatorConditionIsObjectType.ts, 3, 3)) >exprAny2 : any, Symbol(exprAny2, Decl(conditionalOperatorConditionIsObjectType.ts, 9, 3)) var resultIsBoolean3 = new Date() ? exprBoolean1 : exprBoolean2; >resultIsBoolean3 : boolean, Symbol(resultIsBoolean3, Decl(conditionalOperatorConditionIsObjectType.ts, 58, 3)) >new Date() ? exprBoolean1 : exprBoolean2 : boolean >new Date() : Date >Date : DateConstructor, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3)) >exprBoolean2 : boolean, Symbol(exprBoolean2, Decl(conditionalOperatorConditionIsObjectType.ts, 10, 3)) var resultIsNumber3 = new C() ? exprNumber1 : exprNumber2; >resultIsNumber3 : number, Symbol(resultIsNumber3, Decl(conditionalOperatorConditionIsObjectType.ts, 59, 3)) >new C() ? exprNumber1 : exprNumber2 : number >new C() : C >C : typeof C, Symbol(C, Decl(conditionalOperatorConditionIsObjectType.ts, 15, 19)) >exprNumber1 : number, Symbol(exprNumber1, Decl(conditionalOperatorConditionIsObjectType.ts, 5, 3)) >exprNumber2 : number, Symbol(exprNumber2, Decl(conditionalOperatorConditionIsObjectType.ts, 11, 3)) var resultIsString3 = C.doIt() ? exprString1 : exprString2; >resultIsString3 : string, Symbol(resultIsString3, Decl(conditionalOperatorConditionIsObjectType.ts, 60, 3)) >C.doIt() ? exprString1 : exprString2 : string >C.doIt() : void >C.doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) >C : typeof C, Symbol(C, Decl(conditionalOperatorConditionIsObjectType.ts, 15, 19)) >doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprString2 : string, Symbol(exprString2, Decl(conditionalOperatorConditionIsObjectType.ts, 12, 3)) var resultIsObject3 = condObject.valueOf() ? exprIsObject1 : exprIsObject2; >resultIsObject3 : Object, Symbol(resultIsObject3, Decl(conditionalOperatorConditionIsObjectType.ts, 61, 3)) >condObject.valueOf() ? exprIsObject1 : exprIsObject2 : Object >condObject.valueOf() : Object >condObject.valueOf : () => Object, Symbol(Object.valueOf, Decl(lib.d.ts, 102, 29)) >condObject : Object, Symbol(condObject, Decl(conditionalOperatorConditionIsObjectType.ts, 1, 3)) >valueOf : () => Object, Symbol(Object.valueOf, Decl(lib.d.ts, 102, 29)) >exprIsObject1 : Object, Symbol(exprIsObject1, Decl(conditionalOperatorConditionIsObjectType.ts, 7, 3)) >exprIsObject2 : Object, Symbol(exprIsObject2, Decl(conditionalOperatorConditionIsObjectType.ts, 13, 3)) var resultIsStringOrBoolean3 = C.doIt() ? exprString1 : exprBoolean1; // union >resultIsStringOrBoolean3 : string | boolean, Symbol(resultIsStringOrBoolean3, Decl(conditionalOperatorConditionIsObjectType.ts, 62, 3)) >C.doIt() ? exprString1 : exprBoolean1 : string | boolean >C.doIt() : void >C.doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) >C : typeof C, Symbol(C, Decl(conditionalOperatorConditionIsObjectType.ts, 15, 19)) >doIt : () => void, Symbol(C.doIt, Decl(conditionalOperatorConditionIsObjectType.ts, 16, 9)) >exprString1 : string, Symbol(exprString1, Decl(conditionalOperatorConditionIsObjectType.ts, 6, 3)) >exprBoolean1 : boolean, Symbol(exprBoolean1, Decl(conditionalOperatorConditionIsObjectType.ts, 4, 3))