Related to @graydon's mention of counterintuitive consequences of subtyping, here is Lionel Parreaux's talk from UNSOUND 2024 on how some languages with subtyping and intersection/union types support distributivity rules that are unsound in other languages:
https://www.youtube.com/live/ZZx7DvdAID0?t=21146s
It also reminded me (a non-TypeScript user) that due to overloading resolution, TypeScript intersection types are not commutative: https://github.com/Microsoft/TypeScript/issues/14190