=== tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfTuple2.ts === interface base { } >base : base interface base1 { i } >base1 : base1 >i : any class C implements base { c } >C : C >base : base >c : any class D implements base { d } >D : D >base : base >d : any class E implements base { e } >E : E >base : base >e : any class F extends C { f } >F : F >C : C >f : any class C1 implements base1 { i = "foo"; c } >C1 : C1 >base1 : base1 >i : string >"foo" : string >c : any class D1 extends C1 { i = "bar"; d } >D1 : D1 >C1 : C1 >i : string >"bar" : string >d : any var t1: [C, base]; >t1 : [C, base] >C : C >base : base var t2: [C, D]; >t2 : [C, D] >C : C >D : D var t3: [C1, D1]; >t3 : [C1, D1] >C1 : C1 >D1 : D1 var t4: [base1, C1]; >t4 : [base1, C1] >base1 : base1 >C1 : C1 var t5: [C1, F] >t5 : [C1, F] >C1 : C1 >F : F var e11 = t1[4]; // base >e11 : base >t1[4] : base >t1 : [C, base] >4 : number var e21 = t2[4]; // {} >e21 : C | D >t2[4] : C | D >t2 : [C, D] >4 : number var e31 = t3[4]; // C1 >e31 : C1 >t3[4] : C1 >t3 : [C1, D1] >4 : number var e41 = t4[2]; // base1 >e41 : base1 >t4[2] : base1 >t4 : [base1, C1] >2 : number var e51 = t5[2]; // {} >e51 : F | C1 >t5[2] : F | C1 >t5 : [C1, F] >2 : number