class B{ private id: V; } class A{ GetEnumerator: () => B; } function Choice(args: T[]): A; function Choice(...v_args: T[]): A; function Choice(...v_args: any[]): A{ return new A(); }