first of all i would like to thank all the typescript team for your work
you made an awesome implementation!
i saw alot of requests for reflection, method overloading, extension methods and such
i think that the best way to solve those issue
is actually exactly what you have been doing
but instead of combining everything together why not breaking those issues into multiple objects and divide the responsibilities ?
smth like FormatterServices for code conversion (runtime eval;TS to JS)
Reflection for runtime code information
for instance i understand (in a large view) the problems of making methods (class functions) overloadable because of the type checking that should will occur at runtime
this could be avoided by using metadata of the method call on TS
but instead on the hardcoded 'reference' to the said method
if the code was compiled by calling the method X (a:number)
then it will be parsed to call(X, args, signature) from inside a catch all method with the same name
i understand that while i have good arguments i do not see the big picture and that there are other things to consider
however i do feel that typescript is a .NET like thinking in solving a particular problem
(OOP key feature) and that instead of simply ignore some of the runtime aspects developers require, typescript should face this problem head on by implementing a model in which we address to our TS code in JS runtime by a set of certain objects and resources
that will completely simplify that task
whether it is reflection or some kind of prototype linking (method overloading).
thanks to whomever devoted the time in reading my suggestion