=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnOptionalProperty.ts ===
interface I {
>I : I

    a: string;
>a : string

    b?: number;
>b : number
}

interface J {
>J : J

    a: string;
>a : string
}

var a: I;
>a : I
>I : I

var b: J;
>b : J
>J : J

// operator <
var ra1 = a < b;
>ra1 : boolean
>a < b : boolean
>a : I
>b : J

var ra2 = b < a;
>ra2 : boolean
>b < a : boolean
>b : J
>a : I

// operator >
var rb1 = a > b;
>rb1 : boolean
>a > b : boolean
>a : I
>b : J

var rb2 = b > a;
>rb2 : boolean
>b > a : boolean
>b : J
>a : I

// operator <=
var rc1 = a <= b;
>rc1 : boolean
>a <= b : boolean
>a : I
>b : J

var rc2 = b <= a;
>rc2 : boolean
>b <= a : boolean
>b : J
>a : I

// operator >=
var rd1 = a >= b;
>rd1 : boolean
>a >= b : boolean
>a : I
>b : J

var rd2 = b >= a;
>rd2 : boolean
>b >= a : boolean
>b : J
>a : I

// operator ==
var re1 = a == b;
>re1 : boolean
>a == b : boolean
>a : I
>b : J

var re2 = b == a;
>re2 : boolean
>b == a : boolean
>b : J
>a : I

// operator !=
var rf1 = a != b;
>rf1 : boolean
>a != b : boolean
>a : I
>b : J

var rf2 = b != a;
>rf2 : boolean
>b != a : boolean
>b : J
>a : I

// operator ===
var rg1 = a === b;
>rg1 : boolean
>a === b : boolean
>a : I
>b : J

var rg2 = b === a;
>rg2 : boolean
>b === a : boolean
>b : J
>a : I

// operator !==
var rh1 = a !== b;
>rh1 : boolean
>a !== b : boolean
>a : I
>b : J

var rh2 = b !== a;
>rh2 : boolean
>b !== a : boolean
>b : J
>a : I

