myFunc(x: true): number myFunc(x: false): string
foo.ts:1:10 - error TS2393: Duplicate function implementation.
https://www.typescriptlang.org/play/?#code/GYVwdgxgLglg9mABA...
It's a bit of a hack, though - if you incorrectly implement myFunc so that, say, it returns a string even when x is true, it can violate the overloading assertions without any error or warning.
Being able to use a function along those lines in a type safe manner is still pretty nifty, even if you can't write it with type safety.