&gt; Same problems with linters: people write weird code and&#x2F;or introduce unnecessary changes to correct code that doesn&#x27;t pass the check.<p>Having just converted a bunch of pure Javascript to Typescript, and writing new code in Typescript, this hasn&#x27;t been an issue.<p>&gt; Also, optional type checkers throw away a lot of the upsides of type systems (safe refactoring, type-aware optimizations, useful generics) so they&#x27;re kind of a worst-of-both-worlds solution.<p>I&#x27;m not sure what you mean by &quot;throwing away safe refactoring&quot; but yeah, you don&#x27;t get the performance benefits or reified generics (not that it&#x27;s particularly useful). That said, it&#x27;s not like you derive any performance benefit from Java generics either.