=== tests/cases/compiler/icomparable.ts === interface IComparable { >IComparable : IComparable, Symbol(IComparable, Decl(icomparable.ts, 0, 0)) >T : T, Symbol(T, Decl(icomparable.ts, 0, 26)) compareTo(other: T); >compareTo : (other: T) => any, Symbol(compareTo, Decl(icomparable.ts, 0, 30)) >other : T, Symbol(other, Decl(icomparable.ts, 1, 17)) >T : T, Symbol(T, Decl(icomparable.ts, 0, 26)) } declare function sort>(items: U[]): U[]; >sort : >(items: U[]) => U[], Symbol(sort, Decl(icomparable.ts, 2, 5)) >U : U, Symbol(U, Decl(icomparable.ts, 4, 26)) >IComparable : IComparable, Symbol(IComparable, Decl(icomparable.ts, 0, 0)) >items : U[], Symbol(items, Decl(icomparable.ts, 4, 54)) >U : U, Symbol(U, Decl(icomparable.ts, 4, 26)) >U : U, Symbol(U, Decl(icomparable.ts, 4, 26)) interface StringComparable extends IComparable { >StringComparable : StringComparable, Symbol(StringComparable, Decl(icomparable.ts, 4, 71)) >IComparable : IComparable, Symbol(IComparable, Decl(icomparable.ts, 0, 0)) } var sc: StringComparable[]; >sc : StringComparable[], Symbol(sc, Decl(icomparable.ts, 9, 7)) >StringComparable : StringComparable, Symbol(StringComparable, Decl(icomparable.ts, 4, 71)) var x = sort(sc); >x : StringComparable[], Symbol(x, Decl(icomparable.ts, 11, 7)) >sort(sc) : StringComparable[] >sort : >(items: U[]) => U[], Symbol(sort, Decl(icomparable.ts, 2, 5)) >sc : StringComparable[], Symbol(sc, Decl(icomparable.ts, 9, 7))