TypeScript is a strict superset of JavaScript. That means all JavaScript code is valid TypeScript code.
In other words, TypeScript inherits all of JavaScript’s baggage. However, if you are highly disciplined and you adhere only to TypeScript’s features, then it can be a very good language.
The problem is, in practice, JavaScript coding will eventually bleed into your TypeScript coding. It’s unavoidable. TypeScript’s strength is that it plays well with JavaScript, integrating very tightly.
If you use another transpiled language (like PharoJS, for example), you can pretty much avoid all of JavaScript’s nastiness.