It's not even close to the same principle:
GCC compiles C++ straight to object code.
Debugging C++ using GDB or similar does not have you examining some generated C code, you step through C++ statements.
Python does not 'generate intermediary C code', it generates python bytecode which runs on a singly specified C python interpreter.
clang++ does translate C++ to C prior to compiling it to object code, but it translates it to only be compiled by clang - it does not generate C which it expects icc, gcc or bcc to compile.
A frontend generating code to be used by it's coupled backend == good, a frontend generating code to be used by unrelated backends that do not strictly conform to any standards == bad. Do you need diagrams, or have you got it yet?
And yes, it is a real fucking pain in the arse when you write valid python code, run it on the python interpreter, and end up having to debug the python interpreter. Fortunately, this almost never happens, since the bytecode compiler and the interpreter are tightly coupled. which they aren't in TypeScript.