graph LR TS["fa:fa-code TypeScript"] TS --> |"Adds static typing"| Types["fa:fa-list-ul Basic Types"] TS --> |"Enhances code organization"| Interface["fa:fa-puzzle-piece Interfaces"] TS --> |"Adds OOP features"| Classes["fa:fa-cube Classes"] TS --> |"Type manipulation"| Advanced["fa:fa-cogs Advanced Types"] TS --> |"Code reusability"| Generics["fa:fa-recycle Generics"] Types --> T1["fa:fa-font string"] Types --> T2["fa:fa-hashtag number"] Types --> T3["fa:fa-toggle-on boolean"] Types --> T4["fa:fa-layer-group array"] Types --> T5["fa:fa-object-group object"] Types --> T6["fa:fa-times null/undefined"] Interface --> I1["fa:fa-file-contract Object Shape"] Interface --> I2["fa:fa-arrows-alt Extended Interfaces"] Interface --> I3["fa:fa-check Optional Properties"] Interface --> I4["fa:fa-lock Readonly Properties"] Classes --> C1["fa:fa-shield-alt Access Modifiers"] Classes --> C2["fa:fa-arrow-up Inheritance"] Classes --> C3["fa:fa-compress-arrows-alt Implementing Interfaces"] Classes --> C4["fa:fa-bullseye Abstract Classes"] Advanced --> A1["fa:fa-union Union Types"] Advanced --> A2["fa:fa-intersection-alt Intersection Types"] Advanced --> A3["fa:fa-type Type Aliases"] Advanced --> A4["fa:fa-keyboard Keyof"] Generics --> G1["fa:fa-box Generic Functions"] Generics --> G2["fa:fa-boxes Generic Classes"] Generics --> G3["fa:fa-constraint Generic Constraints"]