=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnCallSignature.ts === class Base { >Base : Base public a: string; >a : string } class Derived extends Base { >Derived : Derived >Base : Base public b: string; >b : string } var a1: { fn(): void }; >a1 : { fn(): void; } >fn : () => void var b1: { fn(): void }; >b1 : { fn(): void; } >fn : () => void var a2: { fn(a: number, b: string): void }; >a2 : { fn(a: number, b: string): void; } >fn : (a: number, b: string) => void >a : number >b : string var b2: { fn(a: number, b: string): void }; >b2 : { fn(a: number, b: string): void; } >fn : (a: number, b: string) => void >a : number >b : string var a3: { fn(a: number, b: string): void }; >a3 : { fn(a: number, b: string): void; } >fn : (a: number, b: string) => void >a : number >b : string var b3: { fn(a: number): void }; >b3 : { fn(a: number): void; } >fn : (a: number) => void >a : number var a4: { fn(a: number, b: string): void }; >a4 : { fn(a: number, b: string): void; } >fn : (a: number, b: string) => void >a : number >b : string var b4: { fn(): void }; >b4 : { fn(): void; } >fn : () => void var a5: { fn(a: Base): void }; >a5 : { fn(a: Base): void; } >fn : (a: Base) => void >a : Base >Base : Base var b5: { fn(a: Derived): void }; >b5 : { fn(a: Derived): void; } >fn : (a: Derived) => void >a : Derived >Derived : Derived var a6: { fn(a: Derived, b: Base): void }; >a6 : { fn(a: Derived, b: Base): void; } >fn : (a: Derived, b: Base) => void >a : Derived >Derived : Derived >b : Base >Base : Base var b6: { fn(a: Base, b: Derived): void }; >b6 : { fn(a: Base, b: Derived): void; } >fn : (a: Base, b: Derived) => void >a : Base >Base : Base >b : Derived >Derived : Derived var a7: { fn(): void }; >a7 : { fn(): void; } >fn : () => void var b7: { fn(): Base }; >b7 : { fn(): Base; } >fn : () => Base >Base : Base var a8: { fn(): Base }; >a8 : { fn(): Base; } >fn : () => Base >Base : Base var b8: { fn(): Base }; >b8 : { fn(): Base; } >fn : () => Base >Base : Base var a9: { fn(): Base }; >a9 : { fn(): Base; } >fn : () => Base >Base : Base var b9: { fn(): Derived }; >b9 : { fn(): Derived; } >fn : () => Derived >Derived : Derived var a10: { fn(a?: Base): void }; >a10 : { fn(a?: Base): void; } >fn : (a?: Base) => void >a : Base >Base : Base var b10: { fn(a?: Derived): void }; >b10 : { fn(a?: Derived): void; } >fn : (a?: Derived) => void >a : Derived >Derived : Derived var a11: { fn(...a: Base[]): void }; >a11 : { fn(...a: Base[]): void; } >fn : (...a: Base[]) => void >a : Base[] >Base : Base var b11: { fn(...a: Derived[]): void }; >b11 : { fn(...a: Derived[]): void; } >fn : (...a: Derived[]) => void >a : Derived[] >Derived : Derived //var a12: { fn(t: T, u: U): T[] }; //var b12: { fn(a: A, b: B): A[] }; // operator < var r1a1 = a1 < b1; >r1a1 : boolean >a1 < b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r1a2 = a2 < b2; >r1a2 : boolean >a2 < b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r1a3 = a3 < b3; >r1a3 : boolean >a3 < b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r1a4 = a4 < b4; >r1a4 : boolean >a4 < b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r1a5 = a5 < b5; >r1a5 : boolean >a5 < b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r1a6 = a6 < b6; >r1a6 : boolean >a6 < b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r1a7 = a7 < b7; >r1a7 : boolean >a7 < b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r1a8 = a8 < b8; >r1a8 : boolean >a8 < b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r1a9 = a9 < b9; >r1a9 : boolean >a9 < b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r1a10 = a10 < b10; >r1a10 : boolean >a10 < b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r1a11 = a11 < b11; >r1a11 : boolean >a11 < b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r1a12 = a12 < b12; var r1b1 = b1 < a1; >r1b1 : boolean >b1 < a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r1b2 = b2 < a2; >r1b2 : boolean >b2 < a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r1b3 = b3 < a3; >r1b3 : boolean >b3 < a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r1b4 = b4 < a4; >r1b4 : boolean >b4 < a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r1b5 = b5 < a5; >r1b5 : boolean >b5 < a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r1b6 = b6 < a6; >r1b6 : boolean >b6 < a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r1b7 = b7 < a7; >r1b7 : boolean >b7 < a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r1b8 = b8 < a8; >r1b8 : boolean >b8 < a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r1b9 = b9 < a9; >r1b9 : boolean >b9 < a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r1b10 = b10 < a10; >r1b10 : boolean >b10 < a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r1b11 = b11 < a11; >r1b11 : boolean >b11 < a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r1b12 = b12 < a12; // operator > var r2a1 = a1 > b1; >r2a1 : boolean >a1 > b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r2a2 = a2 > b2; >r2a2 : boolean >a2 > b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r2a3 = a3 > b3; >r2a3 : boolean >a3 > b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r2a4 = a4 > b4; >r2a4 : boolean >a4 > b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r2a5 = a5 > b5; >r2a5 : boolean >a5 > b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r2a6 = a6 > b6; >r2a6 : boolean >a6 > b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r2a7 = a7 > b7; >r2a7 : boolean >a7 > b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r2a8 = a8 > b8; >r2a8 : boolean >a8 > b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r2a9 = a9 > b9; >r2a9 : boolean >a9 > b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r2a10 = a10 > b10; >r2a10 : boolean >a10 > b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r2a11 = a11 > b11; >r2a11 : boolean >a11 > b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r2a12 = a12 > b12; var r2b1 = b1 > a1; >r2b1 : boolean >b1 > a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r2b2 = b2 > a2; >r2b2 : boolean >b2 > a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r2b3 = b3 > a3; >r2b3 : boolean >b3 > a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r2b4 = b4 > a4; >r2b4 : boolean >b4 > a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r2b5 = b5 > a5; >r2b5 : boolean >b5 > a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r2b6 = b6 > a6; >r2b6 : boolean >b6 > a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r2b7 = b7 > a7; >r2b7 : boolean >b7 > a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r2b8 = b8 > a8; >r2b8 : boolean >b8 > a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r2b9 = b9 > a9; >r2b9 : boolean >b9 > a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r2b10 = b10 > a10; >r2b10 : boolean >b10 > a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r2b11 = b11 > a11; >r2b11 : boolean >b11 > a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r2b12 = b12 > a12; // operator <= var r3a1 = a1 <= b1; >r3a1 : boolean >a1 <= b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r3a2 = a2 <= b2; >r3a2 : boolean >a2 <= b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r3a3 = a3 <= b3; >r3a3 : boolean >a3 <= b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r3a4 = a4 <= b4; >r3a4 : boolean >a4 <= b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r3a5 = a5 <= b5; >r3a5 : boolean >a5 <= b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r3a6 = a6 <= b6; >r3a6 : boolean >a6 <= b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r3a7 = a7 <= b7; >r3a7 : boolean >a7 <= b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r3a8 = a8 <= b8; >r3a8 : boolean >a8 <= b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r3a9 = a9 <= b9; >r3a9 : boolean >a9 <= b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r3a10 = a10 <= b10; >r3a10 : boolean >a10 <= b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r3a11 = a11 <= b11; >r3a11 : boolean >a11 <= b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r3a12 = a12 <= b12; var r3b1 = b1 <= a1; >r3b1 : boolean >b1 <= a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r3b2 = b2 <= a2; >r3b2 : boolean >b2 <= a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r3b3 = b3 <= a3; >r3b3 : boolean >b3 <= a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r3b4 = b4 <= a4; >r3b4 : boolean >b4 <= a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r3b5 = b5 <= a5; >r3b5 : boolean >b5 <= a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r3b6 = b6 <= a6; >r3b6 : boolean >b6 <= a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r3b7 = b7 <= a7; >r3b7 : boolean >b7 <= a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r3b8 = b8 <= a8; >r3b8 : boolean >b8 <= a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r3b9 = b9 <= a9; >r3b9 : boolean >b9 <= a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r3b10 = b10 <= a10; >r3b10 : boolean >b10 <= a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r3b11 = b11 <= a11; >r3b11 : boolean >b11 <= a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r3b12 = b12 <= a12; // operator >= var r4a1 = a1 >= b1; >r4a1 : boolean >a1 >= b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r4a2 = a2 >= b2; >r4a2 : boolean >a2 >= b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r4a3 = a3 >= b3; >r4a3 : boolean >a3 >= b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r4a4 = a4 >= b4; >r4a4 : boolean >a4 >= b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r4a5 = a5 >= b5; >r4a5 : boolean >a5 >= b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r4a6 = a6 >= b6; >r4a6 : boolean >a6 >= b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r4a7 = a7 >= b7; >r4a7 : boolean >a7 >= b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r4a8 = a8 >= b8; >r4a8 : boolean >a8 >= b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r4a9 = a9 >= b9; >r4a9 : boolean >a9 >= b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r4a10 = a10 >= b10; >r4a10 : boolean >a10 >= b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r4a11 = a11 >= b11; >r4a11 : boolean >a11 >= b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r4a12 = a12 >= b12; var r4b1 = b1 >= a1; >r4b1 : boolean >b1 >= a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r4b2 = b2 >= a2; >r4b2 : boolean >b2 >= a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r4b3 = b3 >= a3; >r4b3 : boolean >b3 >= a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r4b4 = b4 >= a4; >r4b4 : boolean >b4 >= a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r4b5 = b5 >= a5; >r4b5 : boolean >b5 >= a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r4b6 = b6 >= a6; >r4b6 : boolean >b6 >= a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r4b7 = b7 >= a7; >r4b7 : boolean >b7 >= a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r4b8 = b8 >= a8; >r4b8 : boolean >b8 >= a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r4b9 = b9 >= a9; >r4b9 : boolean >b9 >= a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r4b10 = b10 >= a10; >r4b10 : boolean >b10 >= a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r4b11 = b11 >= a11; >r4b11 : boolean >b11 >= a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r4b12 = b12 >= a12; // operator == var r5a1 = a1 == b1; >r5a1 : boolean >a1 == b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r5a2 = a2 == b2; >r5a2 : boolean >a2 == b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r5a3 = a3 == b3; >r5a3 : boolean >a3 == b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r5a4 = a4 == b4; >r5a4 : boolean >a4 == b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r5a5 = a5 == b5; >r5a5 : boolean >a5 == b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r5a6 = a6 == b6; >r5a6 : boolean >a6 == b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r5a7 = a7 == b7; >r5a7 : boolean >a7 == b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r5a8 = a8 == b8; >r5a8 : boolean >a8 == b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r5a9 = a9 == b9; >r5a9 : boolean >a9 == b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r5a10 = a10 == b10; >r5a10 : boolean >a10 == b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r5a11 = a11 == b11; >r5a11 : boolean >a11 == b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r5a12 = a12 == b12; var r5b1 = b1 == a1; >r5b1 : boolean >b1 == a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r5b2 = b2 == a2; >r5b2 : boolean >b2 == a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r5b3 = b3 == a3; >r5b3 : boolean >b3 == a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r5b4 = b4 == a4; >r5b4 : boolean >b4 == a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r5b5 = b5 == a5; >r5b5 : boolean >b5 == a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r5b6 = b6 == a6; >r5b6 : boolean >b6 == a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r5b7 = b7 == a7; >r5b7 : boolean >b7 == a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r5b8 = b8 == a8; >r5b8 : boolean >b8 == a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r5b9 = b9 == a9; >r5b9 : boolean >b9 == a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r5b10 = b10 == a10; >r5b10 : boolean >b10 == a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r5b11 = b11 == a11; >r5b11 : boolean >b11 == a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r5b12 = b12 == a12; // operator != var r6a1 = a1 != b1; >r6a1 : boolean >a1 != b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r6a2 = a2 != b2; >r6a2 : boolean >a2 != b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r6a3 = a3 != b3; >r6a3 : boolean >a3 != b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r6a4 = a4 != b4; >r6a4 : boolean >a4 != b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r6a5 = a5 != b5; >r6a5 : boolean >a5 != b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r6a6 = a6 != b6; >r6a6 : boolean >a6 != b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r6a7 = a7 != b7; >r6a7 : boolean >a7 != b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r6a8 = a8 != b8; >r6a8 : boolean >a8 != b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r6a9 = a9 != b9; >r6a9 : boolean >a9 != b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r6a10 = a10 != b10; >r6a10 : boolean >a10 != b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r6a11 = a11 != b11; >r6a11 : boolean >a11 != b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r6a12 = a12 != b12; var r6b1 = b1 != a1; >r6b1 : boolean >b1 != a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r6b2 = b2 != a2; >r6b2 : boolean >b2 != a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r6b3 = b3 != a3; >r6b3 : boolean >b3 != a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r6b4 = b4 != a4; >r6b4 : boolean >b4 != a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r6b5 = b5 != a5; >r6b5 : boolean >b5 != a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r6b6 = b6 != a6; >r6b6 : boolean >b6 != a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r6b7 = b7 != a7; >r6b7 : boolean >b7 != a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r6b8 = b8 != a8; >r6b8 : boolean >b8 != a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r6b9 = b9 != a9; >r6b9 : boolean >b9 != a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r6b10 = b10 != a10; >r6b10 : boolean >b10 != a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r6b11 = b11 != a11; >r6b11 : boolean >b11 != a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r6b12 = b12 != a12; // operator === var r7a1 = a1 === b1; >r7a1 : boolean >a1 === b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r7a2 = a2 === b2; >r7a2 : boolean >a2 === b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r7a3 = a3 === b3; >r7a3 : boolean >a3 === b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r7a4 = a4 === b4; >r7a4 : boolean >a4 === b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r7a5 = a5 === b5; >r7a5 : boolean >a5 === b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r7a6 = a6 === b6; >r7a6 : boolean >a6 === b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r7a7 = a7 === b7; >r7a7 : boolean >a7 === b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r7a8 = a8 === b8; >r7a8 : boolean >a8 === b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r7a9 = a9 === b9; >r7a9 : boolean >a9 === b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r7a10 = a10 === b10; >r7a10 : boolean >a10 === b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r7a11 = a11 === b11; >r7a11 : boolean >a11 === b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r7a12 = a12 === b12; var r7b1 = b1 === a1; >r7b1 : boolean >b1 === a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r7b2 = b2 === a2; >r7b2 : boolean >b2 === a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r7b3 = b3 === a3; >r7b3 : boolean >b3 === a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r7b4 = b4 === a4; >r7b4 : boolean >b4 === a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r7b5 = b5 === a5; >r7b5 : boolean >b5 === a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r7b6 = b6 === a6; >r7b6 : boolean >b6 === a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r7b7 = b7 === a7; >r7b7 : boolean >b7 === a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r7b8 = b8 === a8; >r7b8 : boolean >b8 === a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r7b9 = b9 === a9; >r7b9 : boolean >b9 === a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r7b10 = b10 === a10; >r7b10 : boolean >b10 === a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r7b11 = b11 === a11; >r7b11 : boolean >b11 === a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r7b12 = b12 === a12; // operator !== var r8a1 = a1 !== b1; >r8a1 : boolean >a1 !== b1 : boolean >a1 : { fn(): void; } >b1 : { fn(): void; } var r8a2 = a2 !== b2; >r8a2 : boolean >a2 !== b2 : boolean >a2 : { fn(a: number, b: string): void; } >b2 : { fn(a: number, b: string): void; } var r8a3 = a3 !== b3; >r8a3 : boolean >a3 !== b3 : boolean >a3 : { fn(a: number, b: string): void; } >b3 : { fn(a: number): void; } var r8a4 = a4 !== b4; >r8a4 : boolean >a4 !== b4 : boolean >a4 : { fn(a: number, b: string): void; } >b4 : { fn(): void; } var r8a5 = a5 !== b5; >r8a5 : boolean >a5 !== b5 : boolean >a5 : { fn(a: Base): void; } >b5 : { fn(a: Derived): void; } var r8a6 = a6 !== b6; >r8a6 : boolean >a6 !== b6 : boolean >a6 : { fn(a: Derived, b: Base): void; } >b6 : { fn(a: Base, b: Derived): void; } var r8a7 = a7 !== b7; >r8a7 : boolean >a7 !== b7 : boolean >a7 : { fn(): void; } >b7 : { fn(): Base; } var r8a8 = a8 !== b8; >r8a8 : boolean >a8 !== b8 : boolean >a8 : { fn(): Base; } >b8 : { fn(): Base; } var r8a9 = a9 !== b9; >r8a9 : boolean >a9 !== b9 : boolean >a9 : { fn(): Base; } >b9 : { fn(): Derived; } var r8a10 = a10 !== b10; >r8a10 : boolean >a10 !== b10 : boolean >a10 : { fn(a?: Base): void; } >b10 : { fn(a?: Derived): void; } var r8a11 = a11 !== b11; >r8a11 : boolean >a11 !== b11 : boolean >a11 : { fn(...a: Base[]): void; } >b11 : { fn(...a: Derived[]): void; } //var r8a12 = a12 !== b12; var r8b1 = b1 !== a1; >r8b1 : boolean >b1 !== a1 : boolean >b1 : { fn(): void; } >a1 : { fn(): void; } var r8b2 = b2 !== a2; >r8b2 : boolean >b2 !== a2 : boolean >b2 : { fn(a: number, b: string): void; } >a2 : { fn(a: number, b: string): void; } var r8b3 = b3 !== a3; >r8b3 : boolean >b3 !== a3 : boolean >b3 : { fn(a: number): void; } >a3 : { fn(a: number, b: string): void; } var r8b4 = b4 !== a4; >r8b4 : boolean >b4 !== a4 : boolean >b4 : { fn(): void; } >a4 : { fn(a: number, b: string): void; } var r8b5 = b5 !== a5; >r8b5 : boolean >b5 !== a5 : boolean >b5 : { fn(a: Derived): void; } >a5 : { fn(a: Base): void; } var r8b6 = b6 !== a6; >r8b6 : boolean >b6 !== a6 : boolean >b6 : { fn(a: Base, b: Derived): void; } >a6 : { fn(a: Derived, b: Base): void; } var r8b7 = b7 !== a7; >r8b7 : boolean >b7 !== a7 : boolean >b7 : { fn(): Base; } >a7 : { fn(): void; } var r8b8 = b8 !== a8; >r8b8 : boolean >b8 !== a8 : boolean >b8 : { fn(): Base; } >a8 : { fn(): Base; } var r8b9 = b9 !== a9; >r8b9 : boolean >b9 !== a9 : boolean >b9 : { fn(): Derived; } >a9 : { fn(): Base; } var r8b10 = b10 !== a10; >r8b10 : boolean >b10 !== a10 : boolean >b10 : { fn(a?: Derived): void; } >a10 : { fn(a?: Base): void; } var r8b11 = b11 !== a11; >r8b11 : boolean >b11 !== a11 : boolean >b11 : { fn(...a: Derived[]): void; } >a11 : { fn(...a: Base[]): void; } //var r8b12 = b12 !== a12;