interface A { (x: T): void; (x: T): void; } function f(a: T); function f(a: T); function f(a) { } interface I2 { f(x: T): number; f(x: T): string; } interface I3 { f(x: T): number; f(x: T): string; } class C2 { } var b: { new (x: T, y: string): C2; new (x: T, y: string): C2; } interface D { (x: T): T; (x: T): T; }