Unions and Intersections
TypeScript allows you to elegantly compose complex types natively by combining simple types together utilizing Unions and Intersections.
Type Narrowing
Whenever you handle variables classified as Unions (string | number) or completely mysterious Types (unknown), TypeScript will lock you out from utilizing specific methods.
Generics
A core problem with strictly typed languages is maintaining powerful reusability. If you build a function designed strictly to return an Array of Numbers natively, you must tragically duplicate the entire function logic from scratch to process an Array of Strings cleanly.
Utility Types
TypeScript provides several massively powerful globally scoped global mapping Utility Types! These utilities magically manipulate existing Types cleanly into brand new structural configurations natively!