interface I { foo(x: number): void; }
(function foo(x: number) { } as I); // error, property `foo` not found function

declare class C {
  bar(i: I): void;
  bar(f: (x: number) => void): void;
}

new C().bar((x: string) => { }); // error, number ~/~> string
