Overload on constants: type checking additional parameters · Issue #191 · microsoft/TypeScript (original) (raw)
Hi, consider this bit of code:
class Bar { public bar: string; } interface IFoo { doFoo(type: any, bar: any): void; doFoo(type: "Quux", bar: Bar): string; }
We use it like this:
var foo: IFoo; var result:string = foo.doFoo("Quux", new Bar()); // fine
However, while still specifying "Quux", if we pass any type other than new Bar() for the second argument, the compiler falls back to the non-overloaded method:
// Error TS2011: Cannot convert 'void' to 'string'. var result2: string = foo.doFoo("Quux", "bar");
I think this is a bit unfortunate. We are missing an opportunity to verify that the additional arguments also match the overloaded signature.
Ideally the following
foo.doFoo("Quux", "bar");
should generate error TS2082: Supplied parameters do not match any signature of call target
See further discussion on the old codeplex site.