// Object type literals permit overloads with optionality but they must match var c: { func4?(x: number): number; func4(s: string): string; // error, mismatched optionality func5?: { (x: number): number; (s: string): string; }; }; var c2: { func4(x: T): number; func4? (s: T): string; // error, mismatched optionality func5?: { (x: T): number; (s: T): string; }; };