Take for example Haskell. It’s a functionnal, typed language. In Haskell, at compile time, the compiler analyzes all the types of all your functions and if they all match, it drops them completely. There is no type information at all left in a compiled Haskell program, because the compiler can know ahead of runtime if it is correct.
This is also exactly why Nintendo chooses to ship an emulator with the original ROM for their classic games, it’s just that much easier, especially when they don’t make the emulator either.