This is basically a syntaxic sugar to dispatch an union type to the correct overload if the method overloads cover all the union types.
This would make the following possible:
public ToJSON(a: Foo): string {}
public ToJSON(a: Bar): string {}
public ToJSON(a: int): string {}
public string Process(arg: Foo|Bar|int)
{
ToJson(arg);
}
This is basically a syntaxic sugar to dispatch an union type to the correct overload if the method overloads cover all the union types. This would make the following possible: